Sök…


Syntax

  • void Transform.Translate (Vector3-översättning, 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-axel, flottörvinkel, Space relativeTo = Space.Self)
  • void Transform.RotateAround (Vector3-punkt, Vector3-axel, flottörvinkel)
  • void Transform.LookAt (Transform target, Vector3 worldUp = Vector3.up)
  • void Transform.LookAt (Vector3 worldPosition, Vector3 worldUp = Vector3.up)

Översikt

Transformer har huvuddelen av uppgifterna om ett objekt i enhet, inklusive dess föräldrar, barn (er), position, rotation och skala. Den har också funktioner för att ändra var och en av dessa egenskaper. Varje GameObject har en Transform.

Översätta (flytta) ett objekt

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

Rotera ett objekt

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

Mer information och exempel kan ses i Unity-dokumentationen .

Observera också att om spelet använder styva kroppar, bör transformationen inte interageras med direkt (såvida inte den stela kroppen har isKinematic == true ). Använd i så fall AddForce eller andra liknande metoder för att agera direkt på den styva kroppen.

Föräldraskap och barn

Enhet arbetar med hierarkier för att hålla ditt projekt organiserat. Du kan tilldela objekt en plats i hierarkin med redigeraren men du kan också göra detta genom kod.

Föräldraskap

Du kan ställa in ett förälders förälder med följande metoder

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

När du ställer in en transformerande förälder kommer det att hålla objektens position som en världsposition. Du kan välja att göra denna position relativt genom att skicka falskt för parametern worldPositionStays .

Du kan också kontrollera om objektet är ett barn av en annan transform med följande metod

other.transform.IsChildOf( transform );

Att få ett barn

Eftersom objekt kan parenteras till varandra kan du också hitta barn i hierarkin. Det enklaste sättet att göra detta är att använda följande metod

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

Obs: FindChild ringer Hitta under huven

Du kan också söka efter barn längre ner i hierarkin. Du gör detta genom att lägga till en "/" för att ange att gå en nivå djupare.

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

Ett annat sätt att hämta ett barn är att använda GetChild

transform.GetChild( index );

GetChild kräver ett heltal som index som måste vara mindre än det totala barnantalet

int count = transform.childCount;

Ändra syskonindex

Du kan ändra ordningen för barnen i ett GameObject. Du kan göra detta för att definiera barnens dragordning (förutsatt att de är på samma Z-nivå och samma sorteringsordning).

other.transform.SetSiblingIndex( index );

Du kan också snabbt ställa in syskonindexet till antingen först eller sista med följande metoder

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

Ta bort alla barn

Om du vill släppa alla transformatorbarn kan du göra detta:

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

Dessutom tillhandahåller Unity en metod för detta ändamål:

transform.DetachChildren();

I grund och DetachChildren() sätter både looping och DetachChildren() föräldrar till första djupbarn till noll - vilket innebär att de inte kommer att ha några föräldrar.

(första djupbarn: de förvandlingar som är direkt transformationsbarn)



Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow