Ricerca…


Sintassi

  • void Transform.Translate (traduzione Vector3, Spazio relativoTo = Spazio.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 (asse Vector3, angolo flottante, Spazio relativoTo = Spazio.Self)
  • void Transform.RotateAround (punto Vector3, asse Vector3, angolo flottante)
  • void Transform.LookAt (Trasforma target, Vector3 worldUp = Vector3.up)
  • void Transform.LookAt (Vector3 worldPosition, Vector3 worldUp = Vector3.up)

Panoramica

Le trasformazioni contengono la maggior parte dei dati relativi a un oggetto in unità, inclusi genitore (i), figlio (i), posizione, rotazione e scala. Ha anche funzioni per modificare ciascuna di queste proprietà. Ogni GameObject ha una trasformazione.

Traduzione (spostamento) di un oggetto

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

Rotazione di un oggetto

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

Ulteriori informazioni ed esempi possono essere visualizzati nella documentazione di Unity .

Si noti inoltre che se il gioco utilizza corpi rigidi, la trasformazione non deve essere interagita direttamente (a meno che il corpo rigido non abbia isKinematic == true ). In tal caso, utilizzare AddForce o altri metodi simili per agire direttamente sul corpo rigido.

Parenting e bambini

Unity lavora con le gerarchie per mantenere il tuo progetto organizzato. Puoi assegnare agli oggetti un posto nella gerarchia usando l'editor ma puoi farlo anche attraverso il codice.

Parenting

È possibile impostare il genitore di un oggetto con i seguenti metodi

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

Ogni volta che si imposta un genitore di trasformazioni, manterrà la posizione degli oggetti come una posizione mondiale. Puoi scegliere di rendere questa posizione relativa passando false per il parametro worldPositionStays .

È anche possibile verificare se l'oggetto è figlio di un'altra trasformazione con il seguente metodo

other.transform.IsChildOf( transform );

Ottenere un bambino

Poiché gli oggetti possono essere controllati l'un l'altro, puoi anche trovare i bambini nella gerarchia. Il modo più semplice per farlo è utilizzare il seguente metodo

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

Nota: FindChild chiama Trova sotto il cofano

Puoi anche cercare bambini più in basso nella gerarchia. Lo fai aggiungendo in un "/" per specificare di andare ad un livello più profondo.

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

Un altro modo di andare a prendere un bambino sta usando il GetChild

transform.GetChild( index );

GetChild richiede un numero intero come indice che deve essere inferiore al numero totale di figli

int count = transform.childCount;

Modifica dell'indice di Sibling

Puoi cambiare l'ordine dei bambini di un GameObject. Puoi farlo per definire l'ordine di disegno dei bambini (supponendo che siano sullo stesso livello Z e lo stesso ordine).

other.transform.SetSiblingIndex( index );

È anche possibile impostare rapidamente l'indice di pari livello sul primo o sull'ultimo utilizzando i seguenti metodi

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

Staccare tutti i bambini

Se vuoi rilasciare tutti i figli di una trasformazione, puoi farlo:

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

Inoltre, Unity fornisce un metodo per questo scopo:

transform.DetachChildren();

Fondamentalmente, sia il looping che DetachChildren() impostano i genitori dei bambini di primo livello a null - il che significa che non avranno genitori.

(bambini di prima profondità: le trasformazioni che sono direttamente figli di trasformare)



Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow