unity3d
Se transforme
Recherche…
Syntaxe
- void Transform.Translate (traduction de Vector3, Space relativeTo = Space.Self)
- void Transform.Translate (float x, float y, float z, espace relatif à = espace.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 (axe Vector3, angle flottant, espace relatif To = Space.Self)
- void Transform.RotateAround (point Vector3, axe Vector3, angle flottant)
- void Transform.LookAt (cible de transformation, Vector3 worldUp = Vector3.up)
- void Transform.LookAt (Vector3 worldPosition, Vector3 worldUp = Vector3.up)
Vue d'ensemble
Les transformations contiennent la majorité des données relatives à un objet, y compris ses parents, ses enfants, sa position, sa rotation et son échelle. Il a également des fonctions pour modifier chacune de ces propriétés. Chaque objet GameObject a une transformation.
Traduire (déplacer) un objet
// 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);
Faire pivoter un objet
// 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));
Vous trouverez plus d'informations et d'exemples sur la documentation d'Unity .
Notez également que si le jeu utilise des corps rigides, il ne faut pas interagir directement avec la transformation (sauf si le corps rigide a isKinematic == true
). Dans ces cas, utilisez AddForce ou d'autres méthodes similaires pour agir directement sur le corps rigide.
Parenting et enfants
Unity travaille avec des hiérarchies pour que votre projet reste organisé. Vous pouvez affecter des objets à une place dans la hiérarchie à l'aide de l'éditeur, mais vous pouvez également le faire via du code.
La parentalité
Vous pouvez définir le parent d'un objet avec les méthodes suivantes
var other = GetOtherGameObject();
other.transform.SetParent( transform );
other.transform.SetParent( transform, worldPositionStays );
Chaque fois que vous définissez un parent de transformation, les objets resteront en position mondiale. Vous pouvez choisir de rendre cette position relative en transmettant false pour le paramètre worldPositionStays .
Vous pouvez également vérifier si l'objet est un enfant d'une autre transformation avec la méthode suivante
other.transform.IsChildOf( transform );
Obtenir un enfant
Comme les objets peuvent être parentés, vous pouvez également trouver des enfants dans la hiérarchie. La méthode la plus simple consiste à utiliser la méthode suivante
transform.Find( "other" );
transform.FindChild( "other" );
Note: Les appels FindChild Trouver sous le capot
Vous pouvez également rechercher des enfants plus bas dans la hiérarchie. Vous faites cela en ajoutant un "/" pour spécifier un niveau plus profond.
transform.Find( "other/another" );
transform.FindChild( "other/another" );
Une autre façon de récupérer un enfant consiste à utiliser GetChild
transform.GetChild( index );
GetChild nécessite un entier en tant qu'index qui doit être inférieur au nombre total d'enfants
int count = transform.childCount;
Modification de l'index des frères et sœurs
Vous pouvez changer l'ordre des enfants d'un GameObject. Vous pouvez le faire pour définir l'ordre de dessin des enfants (en supposant qu'ils sont sur le même niveau Z et le même ordre de tri).
other.transform.SetSiblingIndex( index );
Vous pouvez également définir rapidement l'index des frères et sœurs sur la première ou la dernière méthode en utilisant les méthodes suivantes
other.transform.SetAsFirstSibling();
other.transform.SetAsLastSibling();
Détacher tous les enfants
Si vous souhaitez libérer tous les enfants d'une transformation, vous pouvez le faire:
foreach(Transform child in transform)
{
child.parent = null;
}
De plus, Unity fournit une méthode à cet effet:
transform.DetachChildren();
Fondamentalement, looping et DetachChildren()
définissent les parents des enfants de première profondeur sur null - ce qui signifie qu'ils n'auront pas de parents.
(enfants de première profondeur: les transformées qui sont directement enfants de transformée)