Jump to content
Unity Insider Forum

Problem mit Parenting


CptGreenwood

Recommended Posts

Hallo,

ich habe ein Problem mit dem Parenting von GameObjects. In meinem Spiel habe ich ein texturiertes Quad, was ein Radar darstellt. Dieses Radar kann von dem Spieler per Mausziehen um sein Zentrum gedreht werden. Nun möchte ich eine Gegnerfigur (ebenfalls texturiertes Quad) auf dem Radar als Child an einer speziellen Position hinzufügen, so dass es seine relative Position und Rotation beibehält, wenn der Spieler das Radar dreht.

Wenn ich im Editor eine Prefab-Instanz des Gegners als Child unter das Radar ziehe, funktioniert alles perfekt. Wenn das Radar gedreht wird, bleibt der Gegner auch an der relativen Position und auch die Rotation ist korrekt.

Wenn ich das aber in einem C#-Script versuche, funktioniert es nicht richtig.

Erst habe ich es so versucht:

GameObject enemy = Instantiate(enemyPrefab, radar);
enemy.transform.position = [gewünschte Position];
enemy.transform.rotation = Quaternion.identity;

Dann habe ich es nochmal so probiert:

GameObject enemy = Instantiate(enemyPrefab, new Vector3(), Quaternion.identity);
enemy.transform.parent = radar;
enemy.transform.position = [gewünschte Position];

In beiden Fällen ist das Ergebnis gleich. Der Gegner wird zwar ein Child des Radars, wird das Radar jedoch rotiert, benimmt sich die Gegnerfigur falsch. Sie scheint um ein anderes Zentrum zu rotieren, also nicht das Zentrum des Radars. Daher bewegt sich der Gegner relativ zum Radar und behält auch seine Rotation nicht.

Ich verstehe nicht, warum das Parenting im Editor einer andere Wirkung hat, als das Parenting per Script. Wie könnte ich nun vorgehen? Weiß jemand eine Lösung?

Danke im Voraus!

Viele Grüße
Ralf

Link zu diesem Kommentar
Auf anderen Seiten teilen

Probiere es mal so (das Parenting verändert auch die lokale Position des Childs und daher sollte man die Position zuerst setzen):

GameObject enemy = Instantiate(enemyPrefab, new Vector3(), Quaternion.identity);
enemy.transform.position = [gewünschte Position];
// enemy.transform.rotation = [gewünschte Rotation];
enemy.transform.parent = radar;

 

Link zu diesem Kommentar
Auf anderen Seiten teilen

Archiviert

Dieses Thema ist jetzt archiviert und für weitere Antworten gesperrt.

×
×
  • Neu erstellen...