Unity OnCollisionEnter не регистрируется - PullRequest
0 голосов
/ 17 мая 2019

Я пытаюсь добавить обнаружение столкновений в свою игру, чтобы проверить его, я установил его для печати «Столкновение» в отладке, но ничего не появляется. Два объекта физически сталкиваются, но столкновение не регистрируется.

public class DamageTrap : MonoBehaviour
{    
    void OnCollisionEnter (Collision col)
    { 
        if (col.gameObject.name == "Player")
        {
            Debug.Log("Collision");
        }
    }
}

Я назначил Rigibody2D и 2D коллайдеры игроку и ловушке. Я дважды проверил, и игрок находится под тегом Player.

1 Ответ

2 голосов
/ 17 мая 2019

Вы говорите, что добавили Rigidbody2D и 2D коллайдеры к игроку и объекту-ловушке, но в своем сценарии вы используете обратный вызов OnCollisionEnter.Вместо этого вам следует использовать обратный вызов OnCollisionEnter2D, если вы хотите 2D-физические уведомления.

Я бы предложил пометить коллайдер-ловушку как триггер, а затем использовать обратный вызов OnTriggerEnter2D, поскольку OnCollisionEnter2D немногоболее громоздким (особенно когда вы вводите параметр Collision2D).

Таким образом, окончательный код будет выглядеть так:

public class DamageTrap : MonoBehaviour
{    
    void OnTriggerEnter2D (Collider2D col)
    { 
        if (col.gameObject.tag == "Player")
        {
            Debug.Log("Collision");
        }
    }
}
...