При изменении слоёв, OnTriggerEnter и OnTriggerExit поочерёдно вызываются пока нахожусь в Collider. Так и должно быть? Как избежать этого?
Делаю дырку в полу. Сделал параллелепипед (Hole) с прозрачной текстурой, на него вешаю следующий скипт:
public class SquareHole : MonoBehaviour
{
Dictionary<GameObject, int> sourceLayers = new Dictionary<GameObject, int>();
private void OnTriggerEnter(Collider other)
{
Debug.Log("OnTriggerEnter");
GameObject gmObj = other.gameObject;
sourceLayers.Add(gmObj, gmObj.layer);
gmObj.layer = 12;
}
private void OnTriggerExit(Collider other)
{
Debug.Log("OnTriggerExit");
GameObject gmObj = other.gameObject;
gmObj.layer = sourceLayers[gmObj];
sourceLayers.Remove(gmObj);
}
}
Пока другой объект находится в Hole, OnTriggerEnter и OnTriggerExit поочерёдно вызываются
Если убрать OnTriggerExit, то OnTriggerEnter срабатывает единожды и всё проваливается как надо.
Как сделать так, что бы при вхождении в Collider слой входящего объекта менялся, а при выходе возвращался к изначальному?