我有一个具有刚体的游戏对象,然后有一组带有子画面和对撞机的子游戏对象,其中每个对撞机都附加到父级的刚体上。 这对于物理和碰撞效果很好,因为整个对象组都会反弹并从风景中碰撞。 但是,当两组碰撞时,我希望它们对单个子游戏对象之一造成损坏。 我在每个子对象上都有一个OnCollisionEnter2D(Collision2D coll)(其中有碰撞器),但是当它们使用coll.gameObject与另一组碰撞时,返回的游戏对象始终是父对象而不是单个子对象。 / p>
长话短说: 将对撞机的游戏对象附着到具有刚体的另一个游戏对象上,有什么方法可以得到?
注意:我已经看到一些使用射线投射来找到对象的解决方案,但这似乎是很多不必要的工作。
注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);
}
}
很明显,我可以在碰撞中的第一个碎片中找到它,因为它是OnCollisionEnter2D所在的类,但是我无法找到一种方法来使第二个碎片与第二个碎片碰撞。
答案 0 :(得分:2)
当您确实需要gameObject
本身的Collision2D
属性时,您尝试获取gameObject
对象的Collider2D
属性。 Collision2D
具有collider
和otherCollider
属性,您可以使用:
private void OnCollisionEnter2D(Collision2D coll)
{
Debug.Log(coll.collider.gameObject.name);
Debug.Log(coll.otherCollider.gameObject.name);
...
}