2017-07-07 79 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來做同樣的事情。