Unity OnCollisionEnter带有一个刚体的子碰撞器

本文关键字:碰撞 OnCollisionEnter 有一个 Unity | 更新日期: 2023-09-27 17:50:31

我试图只在直接联系玩家(具有刚体的父元素)时继续碰撞;忽略与孩子的碰撞(一把剑)。剑被标记为武器,玩家与玩家。

我已经搜索过了,找不到一个足够的答案(c#)

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

这快把我逼疯了,我需要睡觉,请帮帮我。

编辑-我解决了这个问题,用一个简单的东西叫做ContactPoint.otherCollider

Unity OnCollisionEnter带有一个刚体的子碰撞器

如果有人在这个问题上挣扎,OP的编辑太模糊了…

你可以使用collision.contacts:

查看碰撞器在GameObject上的碰撞。
foreach (ContactPoint c in collision.contacts)
{
        Debug.Log(c.thisCollider.name);
}

问题可能是您如何检查标记。我通常像这样直接抓取gameObject的标签。

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

甚至是对撞机的标签

(col.tag === "player")