gpt4 book ai didi

c# - 当它附加到刚体时获取统一对撞机的游戏对象

转载 作者:行者123 更新时间:2023-12-05 01:41:39 25 4
gpt4 key购买 nike

我有一个具有刚体的游戏对象,然后是一组带有 Sprite 和碰撞器的子游戏对象,其中每个碰撞器都附加到父级的刚体。这适用于物理和碰撞,因为整个对象组将从场景中反弹和碰撞。但是,当两组发生碰撞时,我希望它们对单个子游戏对象之一造成伤害。我在每个子对象(上面有对撞机)上都有一个 OnCollisionEnter2D(Collision2D coll) 但是,当它们使用 coll.gameObject 与另一个组发生碰撞时,返回的游戏对象始终是父对象而不是单个子对象。

长话短说:有什么办法可以获取一个collider的游戏对象,当它附加到另一个具有刚体的游戏对象时?

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

注意 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。

最佳答案

当您真正想要 Collider2D 的 gameObject 属性时,您正试图获取 Collision2D 对象的 gameObject 属性 本身。 Collision2D具有您可以使用的 colliderotherCollider 属性:

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

关于c# - 当它附加到刚体时获取统一对撞机的游戏对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54137327/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com