我有一个游戏物体,上面有一个刚体和一组带有精灵和碰撞器的子游戏物体,其中每个碰撞器都附加在父物体的刚体上。这对于物理和碰撞很有用,因为整个对象组将弹跳并与场景产生碰撞。然而,当两个组相撞时,我希望其中一个子游戏物体会受到损坏。我在每个子对象上(它们具有碰撞器)都有一个OnCollisionEnter2D(Collision2D coll),但是当它们与另一个组发生碰撞时,使用coll.gameObject返回的游戏对象总是父对象而不是单个子对象。
简而言之: 是否有办法在碰撞器附加在具有刚体的另一个游戏对象上时获取碰撞器所属的游戏对象?
注意:我已经看到一些解决方案使用光线投射来查找对象,但这似乎是很多不必要的工作。
注意2:我也看到过使用触发器的选项,但我更喜欢碰撞,因为它还处理了物理。
简而言之: 是否有办法在碰撞器附加在具有刚体的另一个游戏对象上时获取碰撞器所属的游戏对象?
注意:我已经看到一些解决方案使用光线投射来查找对象,但这似乎是很多不必要的工作。
注意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);
}
}
很明显,我可以保留第一个Piece的碰撞,因为OnCollisionEnter2D存在于该类中,但我无法想出一种方法来获取第二个Piece它正在与其碰撞。