Unity OnCollisionEnter с коллайдером, который является дочерним элементом твердого тела

Я пытаюсь продолжить столкновение только при прямом контакте с игроком (родителем с твердым телом); и игнорирование столкновений с ребенком (меч). меч помечен оружием, а игрок игроком.

Я искал и не нашел достаточного ответа (С#)

void OnCollisionEnter (Collision col){
    Debug.Log("boop P" + playerNumber);
    if (col.collider.transform.tag == "Player") { 
        -stuff happens-
    }
}

Это сводит меня с ума, и мне нужно поспать, пожалуйста, помогите.

Изменить - я решил это спустя века с помощью простой вещи под названием ContactPoint.otherCollider.


person Coote    schedule 24.05.2015    source источник


Ответы (2)


Проблема может заключаться в том, как вы проверяете тег. Обычно я беру тег gameObject напрямую, вот так.

void OnCollisionEnter(Collision col){
    if (col.gameObject.tag == "Player"){
        //stuff happens
    }
}

Или даже тег коллайдера.

(col.tag === "player")
person mikemsrk    schedule 24.05.2015

На случай, если кто-то еще борется с этим, и редактирование ОП было слишком расплывчатым...

Вы можете проверить, какие коллайдеры попали в GameObject, вызвав скрипт с помощью Collision.contacts:

foreach (ContactPoint c in collision.contacts)
{
        Debug.Log(c.thisCollider.name);
}
person Lucky    schedule 18.04.2018