Suche…


Syntax

  • void Transform.Translate (Vector3-Übersetzung, Space relativeTo = Space.Self)
  • void Transform.Translate (float x, float y, float z, Space relativeTo = Space.Self)
  • void Transform.Rotate (Vector3 eulerAngles, Space relativeTo = Space.Self)
  • void Transform.Rotate (Float xAngle, Float yAngle, Float zAngle, Space relativeTo = Space.Self)
  • void Transform.Rotate (Vector3-Achse, Float-Winkel, Space relativTo = Space.Self)
  • void Transform.RotateAround (Vector3-Punkt, Vector3-Achse, Schwimmwinkel)
  • void Transform.LookAt (Transformationsziel, Vector3 worldUp = Vector3.up)
  • void Transform.LookAt (Vector3 worldPosition, Vector3 worldUp = Vector3.up)

Überblick

Transformationen enthalten die Mehrheit der Daten eines Objekts in der Einheit, einschließlich der übergeordneten Elemente, der untergeordneten Elemente, der Position, der Rotation und der Skalierung. Es hat auch Funktionen, um jede dieser Eigenschaften zu ändern. Jedes GameObject hat eine Transformation.

Objekt verschieben (verschieben)

// Move an object 10 units in the positive x direction
transform.Translate(10, 0, 0);

// translating with a vector3
vector3 distanceToMove = new Vector3(5, 2, 0);
transform.Translate(distanceToMove);

Objekt drehen

// Rotate an object 45 degrees about the Y axis
transform.Rotate(0, 45, 0);

// Rotates an object about the axis passing through point (in world coordinates) by angle in degrees
transform.RotateAround(point, axis, angle);
// Rotates on it's place, on the Y axis, with 90 degrees per second
transform.RotateAround(Vector3.zero, Vector3.up, 90 * Time.deltaTime);

// Rotates an object to make it's forward vector point towards the other object
transform.LookAt(otherTransform);
// Rotates an object to make it's forward vector point towards the given position (in world coordinates)
transform.LookAt(new Vector3(10, 5, 0));

Weitere Informationen und Beispiele finden Sie in der Unity-Dokumentation .

Beachten Sie auch, dass, wenn das Spiel starre Körper verwendet, die Transformation nicht direkt interagiert werden darf (es sei denn, der starre Körper hat isKinematic == true ). In diesem Fall verwenden Sie AddForce oder andere ähnliche Methoden, um direkt auf den starren Körper einzuwirken .

Erziehung und Kinder

Unity arbeitet mit Hierarchien, um Ihr Projekt organisiert zu halten. Sie können Objekte mit dem Editor einer Stelle in der Hierarchie zuweisen, dies kann jedoch auch über Code erfolgen.

Erziehung

Sie können das übergeordnete Objekt eines Objekts mit den folgenden Methoden festlegen

var other = GetOtherGameObject();
other.transform.SetParent( transform );
other.transform.SetParent( transform, worldPositionStays );

Wenn Sie ein übergeordnetes Transformationsobjekt festlegen, wird die Position des Objekts als Weltposition beibehalten. Sie können wählen, diese Position relativ zu machen, indem Sie für den Parameter worldPositionStays den Wert false angeben .

Sie können auch mit der folgenden Methode überprüfen, ob das Objekt einer anderen Transformation untergeordnet ist

other.transform.IsChildOf( transform );

Ein Kind bekommen

Da Objekte einander übergeordnet werden können, können Sie auch Kinder in der Hierarchie suchen. Am einfachsten geht dies mit der folgenden Methode

transform.Find( "other" );
transform.FindChild( "other" );

Hinweis: FindChild ruft Find unter der Haube auf

Sie können auch nach untergeordneten Elementen in der Hierarchie suchen. Dazu fügen Sie ein "/" hinzu, um festzulegen, dass Sie tiefer gehen sollen.

transform.Find( "other/another" );
transform.FindChild( "other/another" );

Eine andere Methode zum Abrufen eines Kindes ist die Verwendung von GetChild

transform.GetChild( index );

GetChild erfordert eine ganze Zahl als Index, die kleiner als die Gesamtzahl der untergeordneten Elemente sein muss

int count = transform.childCount;

Geschwisterindex ändern

Sie können die Reihenfolge der Kinder eines GameObjects ändern. Sie können dies tun, um die Zeichenreihenfolge der Kinder zu definieren (vorausgesetzt, sie befinden sich auf derselben Z-Ebene und derselben Sortierreihenfolge).

other.transform.SetSiblingIndex( index );

Sie können den Schwesterindex auch mit den folgenden Methoden schnell auf den ersten oder letzten Index setzen

other.transform.SetAsFirstSibling();
other.transform.SetAsLastSibling();

Alle Kinder trennen

Wenn Sie alle untergeordneten Elemente einer Transformation freigeben möchten, können Sie Folgendes tun:

foreach(Transform child in transform)
{
    child.parent = null;
}

Außerdem bietet Unity eine Methode für diesen Zweck:

transform.DetachChildren();

Grundsätzlich setzen sowohl Loop als auch DetachChildren() die Eltern von Kindern der ersten DetachChildren() auf Null - was bedeutet, dass sie keine Eltern haben werden.

(Kinder der ersten Vertiefung: die Transformationen, die der Transformation direkt untergeordnet sind)



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow