C# 获取unity collider的游戏对象,当它连接到刚体时
我有一个游戏对象,它有一个刚体,然后是一组带有精灵和碰撞器的子游戏对象,其中每个碰撞器都连接到父刚体。 这对于物理和碰撞非常有效,因为整个对象组将从场景中反弹和碰撞。 然而,当两个组发生碰撞时,我希望它们在一个单独的子游戏对象上受到伤害。 我在每个子对象上都有一个OnCollisionInter2D(Collision2D coll)(子对象上有碰撞器),但是,当它们使用coll.gameObject与另一个组碰撞时,返回的游戏对象始终是父对象,而不是单个子对象 长话短说: 当对撞机的游戏对象连接到另一个具有刚体的游戏对象时,是否有任何方法可以获取该对象 注意:我见过一些使用光线投射来查找对象的解决方案,但似乎有很多不必要的工作 注2:我也见过使用触发器的选项,但我更喜欢碰撞,因为它也处理物理问题C# 获取unity collider的游戏对象,当它连接到刚体时,c#,unity3d,C#,Unity3d,我有一个游戏对象,它有一个刚体,然后是一组带有精灵和碰撞器的子游戏对象,其中每个碰撞器都连接到父刚体。 这对于物理和碰撞非常有效,因为整个对象组将从场景中反弹和碰撞。 然而,当两个组发生碰撞时,我希望它们在一个单独的子游戏对象上受到伤害。 我在每个子对象上都有一个OnCollisionInter2D(Collision2D coll)(子对象上有碰撞器),但是,当它们使用coll.gameObject与另一个组碰撞时,返回的游戏对象始终是父对象,而不是单个子对象 长话短说: 当对撞机的游戏对象连
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);
...
}
谢谢答案很简单,就是这样