Zoeken…


Syntaxis

  • void Transform.Translate (Vector3-vertaling, Space relativeTo = Space.Self)
  • void Transform.Translate (float x, float y, float z, spatie relatiefTo = spatie. zelf)
  • 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-as, zweefhoek, Spatie relatiefTo = SpatieZelf)
  • void Transform.RotateAround (Vector3-punt, Vector3-as, zweefhoek)
  • void Transform.LookAt (Transform target, Vector3 worldUp = Vector3.up)
  • void Transform.LookAt (Vector3 worldPosition, Vector3 worldUp = Vector3.up)

Overzicht

Transformaties bevatten de meeste gegevens over een object in eenheid, inclusief de ouder (s), kind (s), positie, rotatie en schaal. Het heeft ook functies om elk van deze eigenschappen te wijzigen. Elk GameObject heeft een transformatie.

Een object vertalen (verplaatsen)

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

Een object roteren

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

Meer informatie en voorbeelden zijn te vinden in Unity-documentatie .

Merk ook op dat als de game starre lichamen gebruikt, de transformatie niet direct moet worden gebruikt (tenzij de stijve body isKinematic == true ). Gebruik in dat geval AddForce of andere vergelijkbare methoden om rechtstreeks op het stijve lichaam in te werken.

Ouderschap en kinderen

Unity werkt met hiërarchieën om uw project georganiseerd te houden. U kunt objecten een plaats in de hiërarchie geven met behulp van de editor, maar u kunt dit ook doen door middel van code.

ouderschap

U kunt de ouder van een object op de volgende manieren instellen

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

Wanneer u een transformerende ouder instelt, behoudt deze de objecten positie als een wereldpositie. U kunt ervoor kiezen om deze positie relatief te maken door false door te geven voor de parameter worldPositionStays .

U kunt ook controleren of het object een kind van een andere transformatie is met de volgende methode

other.transform.IsChildOf( transform );

Een kind krijgen

Omdat objecten aan elkaar kunnen worden overgedragen, kunt u ook kinderen in de hiërarchie vinden. De eenvoudigste manier om dit te doen is door de volgende methode te gebruiken

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

Opmerking: FindChild roept Find under the hood op

U kunt ook zoeken naar kinderen verderop in de hiërarchie. U doet dit door een "/" toe te voegen om een niveau dieper te gaan.

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

Een andere manier om een kind op te halen is het gebruik van GetChild

transform.GetChild( index );

GetChild vereist een geheel getal als index dat kleiner moet zijn dan het totale aantal onderliggende items

int count = transform.childCount;

De broer / zus-index wijzigen

Je kunt de volgorde van de kinderen van een GameObject wijzigen. U kunt dit doen om de tekenvolgorde van de kinderen te definiëren (ervan uitgaande dat ze zich op hetzelfde Z-niveau en dezelfde sorteervolgorde bevinden).

other.transform.SetSiblingIndex( index );

U kunt ook snel de broer of zus index instellen op eerst of laatste met behulp van de volgende methoden

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

Alle kinderen losmaken

Als je alle kinderen van een transformatie wilt bevrijden, kun je dit doen:

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

Unity biedt ook een methode voor dit doel:

transform.DetachChildren();

DetachChildren() gezegd hebben zowel looping als DetachChildren() de ouders van DetachChildren() kinderen op nul gezet - wat betekent dat ze geen ouders zullen hebben.

(first-depth children: de transformaties die direct kind van transformatie zijn)



Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow