2017-07-07 899 views
0

我正在尝试开发一个小型2D Unity平台游戏,学习如何使用Unity的界面。我一直在试图让一个gameobject跟踪一个敌人的克隆并遵循它。它的功能就是当你将鼠标悬停在敌人的克隆上时,它显示敌人的健康。但是当我徘徊在敌人身上时,它会跟踪原始敌人的位置,而不是克隆人的位置。两个gameobjects都有相同的名字。我想要的是GameObject HoverDataDisplay (如截图所示)来跟踪它的兄弟,敌人。如何按名称查找兄弟游戏对象; Unity2d c#

Hierarchy view of Enemy and clone.

当前的代码,我有跟踪脚本如下所示:

 private GameObject Enemy; 

void Start() { 

    Enemy = GameObject.Find ("Enemy"); 
} 

void Update(){ 
    transform.position = new Vector3 (Enemy.transform.position.x - 0.57f, Enemy.transform.position.y + 1.5f, Enemy.transform.position.z); 

} 

但游戏对象(HoverDataDisplay)仅沿用了原先的敌人。

感谢您的帮助!

+0

此脚本附在哪里? – Programmer

+0

此脚本附加到HoverDataDisplay游戏对象,因此它跟踪敌人。 –

+0

你想找到它的敌人物体? – Programmer

回答

2

在Unity中,您可以使用正斜杠"/"来查找对象的子对象。由于父母的名字是不同的,你可以很容易地找到他们是这样的:

GameObject.Find("EnemyObject/Enemy"); 

而第二HoverDataDisplay:

GameObject.Find("EnemyObject(Clone)/Enemy"); 

这不是真的是一个好主意,让你的游戏物体使用默认的“克隆“的名称。在实例化之后,您应该重命名它,以便它很容易找到。只有在实例化后才需要查找对象时才执行此操作。


该脚本连接到HoverDataDisplay游戏对象

实际上,你可以得到它的父对象要么是EnemyObjectEnemyObject(克隆)transform.parent然后使用FindChild来找到敌方的对象。

//First, Find the Parent Object which is either EnemyObject or EnemyObject(Clone) 
Transform parent = transform.parent; 

//Now, Find it's Enemy Object 
GameObject enemy = parent.FindChild("Enemy").gameObject; 

我建议您使用这种方法,而不是我提到的第一个。第一个被提到,这样你就会知道它可以完成。

编辑

Transform.FindChild现在已经过时。你可以使用Transform.Find来做同样的事情。