2017-07-07 23 views
0

私は、Unityのインターフェイスで作業する方法を学ぶために、小さな2D Unityプラットフォームを開発しようとしています。私は、gameObjectが敵のクローンを追跡し、それに従うようにしようとする問題を抱えています。この機能は、敵のクローンにマウスを乗せたときに敵の健康を表示するようにすることです。しかし、私が敵にぶつかると、クローンではなく、元の敵の位置を追跡します。どちらのゲームオブジェクトも同じ名前です。私が欲しいのは、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 GameObjectに付属しているので、敵を追跡します。 –

+0

敵のオブジェクトを探したいですか? – Programmer

答えて

2

ユニティでは、スラッシュ"/"を使用してオブジェクトの子を見つけることができます。両親の名前が異なっているので、あなたは簡単にこのようにそれらを見つけることができます。

GameObject.Find("EnemyObject/Enemy"); 

そして第二HoverDataDisplay:

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

それは「あなたのゲームオブジェクトは、デフォルトを使用できるように本当に良い考えではありませんクローン "の名前。簡単に見つけることができるようにインスタンス化した後、名前を変更する必要があります。オブジェクトをインスタンス化した後でオブジェクトを検出する必要がある場合にのみ、これを実行します。


このスクリプトはHoverDataDisplayゲームオブジェクト

に取り付けられている。あなたは、実際には、その後にFindChildを使用transform.parentEnemyObjectEnemyObject(クローン)のいずれかである親オブジェクトの取得することができます敵のオブジェクトを見つける。

//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; 

私が言及した最初の方法の代わりにこの方法を使用することをお勧めします。最初のものはあなたがそれが行えることがわかるように言及されています。

EDIT

Transform.FindChildが廃止されます。 Transform.Findを使って同じことを行うことができます。

関連する問題