GEC1
Begriff · raum

Transform

Die Component, die Position, Drehung und Größe eines GameObjects hält. Jedes GameObject hat genau eine. Bei Kindobjekten gelten die Werte relativ zum Elternobjekt.

Kurz

Jedes GameObject hat eine Transform-Component. Sie lässt sich nicht entfernen. Sie hält drei Werte, jeweils für x, y und z:

Feldbedeutet
Positionwo das Objekt steht
Rotationwie es gedreht ist, in Grad
Scalewie groß es ist; 1 ist die Originalgröße

Eine Einheit gilt in Unity als ein Meter. Die Physik rechnet damit: Ein Würfel mit Kantenlänge 50 fällt wie ein Hochhaus, also scheinbar in Zeitlupe.

Lokal und Welt

GameObjects lassen sich verschachteln. In der Hierarchy ein Objekt auf ein anderes ziehen: Es wird zum Kindobjekt. Ein Kind bewegt, dreht und skaliert sich mit seinem Elternobjekt mit.

Der Inspector zeigt die Werte eines Kindobjekts relativ zum Elternobjekt. Das sind lokale Koordinaten. Ein Objekt ohne Elternobjekt steht direkt in Weltkoordinaten.

Ein Beispiel: Ein Schlüssel liegt als Kind eines Tisches bei (0, 1, 0). Steht der Tisch bei (5, 0, 2), liegt der Schlüssel in der Welt bei (5, 1, 2), solange der Tisch weder gedreht noch skaliert ist.

transform.localPosition   // relativ zum Elternobjekt, wie im Inspector
transform.position        // in der Welt

In Unity sehen

  • In der Scene-Ansicht verschieben, drehen und skalieren die Werkzeuge Move, Rotate und Scale (Tasten W, E, R). Die Achsen sind farbig: x rot, y grün, z blau.
  • Tipp aus der Unity-Doku: Ein leeres Elternobjekt vor dem Einhängen auf (0, 0, 0) setzen, ungedreht, Scale 1. Dann sind die lokalen Werte der Kinder gleich ihren Weltwerten.
  • Scale nie auf 0 setzen; das führt zu Rechenfehlern beim Zeichnen.
  • Hat ein Objekt einen Rigidbody, bewegt es die Physik. Die Transform dann nicht zusätzlich per Skript verschieben.

Weiterlesen