При изменении слоёв, 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 слой входящего объекта менялся, а при выходе возвращался к изначальному?


Ответы (0 шт):