如何在碰撞时获取 parent 的标签?
How to get tag of parent on collision?
我在完成一项简单的任务时遇到了很大的麻烦。我想在检测到碰撞时检查 parent 游戏 object 的标签是否等于我的值。因为我只想在撞到那个障碍物的时候加个特效
This is my hierarchy:
A - > PARENT
-B -> PARENT CHILD
--C -> Collider Gameobject
所以我想当我的玩家与 C object 碰撞时检查 A 中的标签是否等于我的值,但我不知道如何获取 PARENT A 游戏的标签object.
感谢您的宝贵时间:)
private void OnCollisionEnter2D(Collision2D other)
{
if (other.transform.parent.CompareTag("Enemy"))
{
//Do stuff
}
}
@Sean Carey 的答案在您只想在层次结构中上升一个级别时非常有效,但在您的特定情况下会失败,因为您似乎正在寻找检查 'root' 的标签Transform
.
幸运的是,Unity 为我们提供了一个 属性 来从任何给定的 Transform
对象中引用 root。
这是一个您可以如何使用它的示例,但请考虑对其进行更改以满足您的特定需求:
private void OnCollisionEnter(Collision collision)
{
if (collision.transform.root.CompareTag("EnterTagToCompareHere"))
{
// Tag on the root object matches
}
}
我在完成一项简单的任务时遇到了很大的麻烦。我想在检测到碰撞时检查 parent 游戏 object 的标签是否等于我的值。因为我只想在撞到那个障碍物的时候加个特效
This is my hierarchy:
A - > PARENT
-B -> PARENT CHILD
--C -> Collider Gameobject
所以我想当我的玩家与 C object 碰撞时检查 A 中的标签是否等于我的值,但我不知道如何获取 PARENT A 游戏的标签object.
感谢您的宝贵时间:)
private void OnCollisionEnter2D(Collision2D other)
{
if (other.transform.parent.CompareTag("Enemy"))
{
//Do stuff
}
}
@Sean Carey 的答案在您只想在层次结构中上升一个级别时非常有效,但在您的特定情况下会失败,因为您似乎正在寻找检查 'root' 的标签Transform
.
幸运的是,Unity 为我们提供了一个 属性 来从任何给定的 Transform
对象中引用 root。
这是一个您可以如何使用它的示例,但请考虑对其进行更改以满足您的特定需求:
private void OnCollisionEnter(Collision collision)
{
if (collision.transform.root.CompareTag("EnterTagToCompareHere"))
{
// Tag on the root object matches
}
}