Cut*_*tch 4 c# unity-game-engine
我有一个具有刚体的游戏对象,然后是一组带有精灵和碰撞器的子游戏对象,其中每个碰撞器都附加到父级的刚体。这对于物理和碰撞非常有效,因为整组物体都会从场景中反弹和碰撞。然而,当两个群体发生碰撞时,我希望它们对单个子游戏对象之一造成损坏。我在每个子对象上都有一个 OnCollisionEnter2D(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);
}
}
Run Code Online (Sandbox Code Playgroud)
显然我可以找到碰撞中的第一块,因为它是 OnCollisionEnter2D 存在的类,但我无法找到一种方法来获取它碰撞的第二块。
当您真正想要对象本身的属性时,您正在尝试获取对象gameObject的属性。 具有您可以使用的和属性:Collision2DgameObjectCollider2DCollision2DcolliderotherCollider
private void OnCollisionEnter2D(Collision2D coll)
{
Debug.Log(coll.collider.gameObject.name);
Debug.Log(coll.otherCollider.gameObject.name);
...
}
Run Code Online (Sandbox Code Playgroud)