C# 获取unity collider的游戏对象,当它连接到刚体时

C# 获取unity collider的游戏对象,当它连接到刚体时,c#,unity3d,C#,Unity3d,我有一个游戏对象,它有一个刚体,然后是一组带有精灵和碰撞器的子游戏对象,其中每个碰撞器都连接到父刚体。 这对于物理和碰撞非常有效,因为整个对象组将从场景中反弹和碰撞。 然而,当两个组发生碰撞时,我希望它们在一个单独的子游戏对象上受到伤害。 我在每个子对象上都有一个OnCollisionInter2D(Collision2D coll)(子对象上有碰撞器),但是,当它们使用coll.gameObject与另一个组碰撞时,返回的游戏对象始终是父对象,而不是单个子对象 长话短说: 当对撞机的游戏对象连

我有一个游戏对象,它有一个刚体,然后是一组带有精灵和碰撞器的子游戏对象,其中每个碰撞器都连接到父刚体。 这对于物理和碰撞非常有效,因为整个对象组将从场景中反弹和碰撞。 然而,当两个组发生碰撞时,我希望它们在一个单独的子游戏对象上受到伤害。 我在每个子对象上都有一个OnCollisionInter2D(Collision2D coll)(子对象上有碰撞器),但是,当它们使用coll.gameObject与另一个组碰撞时,返回的游戏对象始终是父对象,而不是单个子对象

长话短说: 当对撞机的游戏对象连接到另一个具有刚体的游戏对象时,是否有任何方法可以获取该对象

注意:我见过一些使用光线投射来查找对象的解决方案,但似乎有很多不必要的工作

注2:我也见过使用触发器的选项,但我更喜欢碰撞,因为它也处理物理问题

private void OnCollisionEnter2D(Collision2D coll)
{
        Debug.Log(coll.gameObject.name); // Showing the parent
        ShipPiece sp = coll.gameObject.GetComponent<Piece>(); // Looking for the individual piece
        if (sp != null)
        {
            // Apply the damage to the other piece based off the weight of this piece
            coll.gameObject.SendMessage("ApplyDamage", weight*10);
        }
}
专用void onCollisionInter2D(Collision2D coll)
{
Debug.Log(coll.gameObject.name);//显示父级
ShipPiece sp=coll.gameObject.GetComponent();//查找单个棋子
如果(sp!=null)
{
//根据该件的重量,对另一件进行损坏
coll.gameObject.SendMessage(“ApplyDamage”,重量*10);
}
}

显然,我可以看到碰撞的第一部分,因为它是OnCollisionInter2D存在的类,但是我想不出一个方法来获得第二块它碰撞到的东西。

当你真的想要
被碰撞的2D
对象的
游戏对象
属性时,你正试图获得
被碰撞的2D
对象的
属性。具有可以使用的
碰撞器
其他碰撞器
属性:

private void OnCollisionEnter2D(Collision2D coll)
{
    Debug.Log(coll.collider.gameObject.name);
    Debug.Log(coll.otherCollider.gameObject.name);
    ...   
}

谢谢答案很简单,就是这样