Buscar..


Sintaxis

  • void Transform.Translate (vector3 traducción, espacio 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 axis, float angle, Space relativeTo = Space.Self)
  • void Transform.RotateAround (punto Vector3, eje Vector3, ángulo de flotación)
  • void Transform.LookAt (Transformar objetivo, Vector3 worldUp = Vector3.up)
  • void Transform.LookAt (Vector3 worldPosition, Vector3 worldUp = Vector3.up)

Visión general

Las transformaciones contienen la mayoría de los datos sobre un objeto en unidad, incluidos los padres, los hijos, la posición, la rotación y la escala. También tiene funciones para modificar cada una de estas propiedades. Cada GameObject tiene una transformación.

Traducir (mover) un objeto

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

Rotando un objeto

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

Más información y ejemplos se pueden ver en la documentación de Unity .

También tenga en cuenta que si el juego utiliza cuerpos rígidos, entonces la transformación no se debe interactuar directamente (a menos que el cuerpo rígido sea isKinematic == true ). En ese caso, use AddForce u otros métodos similares para actuar directamente sobre el cuerpo rígido.

Padres e hijos

Unity trabaja con jerarquías para mantener su proyecto organizado. Puede asignar objetos a un lugar en la jerarquía utilizando el editor, pero también puede hacerlo a través del código.

Crianza de los hijos

Puedes establecer el padre de un objeto con los siguientes métodos

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

Cada vez que establezca un elemento primario de transformación, mantendrá la posición de los objetos como una posición mundial. Puede elegir que esta posición sea relativa al pasar falso para el parámetro worldPositionStays .

También puede verificar si el objeto es un hijo de otra transformación con el siguiente método

other.transform.IsChildOf( transform );

Conseguir un niño

Como los objetos se pueden parear entre sí, también puede encontrar hijos en la jerarquía. La forma más sencilla de hacerlo es mediante el siguiente método

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

Nota: FindChild llama a Find under the hood

También puede buscar niños más abajo en la jerarquía. Para ello, agregue una "/" para especificar un nivel más profundo.

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

Otra forma de obtener un hijo es usando GetChild

transform.GetChild( index );

GetChild requiere un número entero como índice que debe ser menor que el recuento total de hijos

int count = transform.childCount;

Cambio de índice de hermanos

Puedes cambiar el orden de los hijos de un GameObject. Puede hacer esto para definir el orden de sorteo de los hijos (suponiendo que estén en el mismo nivel Z y el mismo orden de clasificación).

other.transform.SetSiblingIndex( index );

También puede establecer rápidamente el índice de hermanos primero o último usando los siguientes métodos

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

Separando a todos los niños

Si desea liberar a todos los hijos de una transformación, puede hacer esto:

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

Además, Unity proporciona un método para este propósito:

transform.DetachChildren();

Básicamente, tanto looping como DetachChildren() configuran a los padres de los niños de primer nivel en nulo, lo que significa que no tendrán padres.

(Hijos de primera profundidad: las transformaciones que son directamente hijos de la transformación)



Modified text is an extract of the original Stack Overflow Documentation
Licenciado bajo CC BY-SA 3.0
No afiliado a Stack Overflow