El Transform es usado para almacenar la posición, rotación, escala y el estado de parenting de un GameObject y por lo tanto es importante. Un GameObject siempre va a tener adjunto un Transform component - no es posible quitar un Transform o crear un GameObject sin uno.
Transforms son manipulados en espacio 3D en el eje X, Y, y Z o en espacio 2D en solo X y Y. En Unity, estos ejes son representados por los colores rojo, verde, y azul respectivamente.
Un Transform puede ser editado en el Scene View o cambiando sus propiedades en el Inspector. En la escena, usted puede modificar Transforms usando las herramientas de desplazamiento, rotación y escala. Estas herramientas están ubicadas en la esquina superior izquierda del editor de Unity.
Las herramientas pueden ser usadas en cualquier objeto en la escena. Cuando haga click en un objeto, usted va a ver la herramienta gizmo aparecer dentro de él. La apariencia del gizmo depende en qué herramienta es seleccionada.
Cuando haga click y arrastre en uno de los tres ejes de gizmo, usted verá que sus colores cambiarán a amarillo. A medida que arrastre el mouse, usted vera el objeto trasladarse(translate), rotar(rotate), o escalar(scale) a lo largo del eje seleccionado. Cuando suelte el botón del mouse, el eje se mantiene seleccionado. Si usted posteriormente arrastra con el botón del medio del mouse, el último eje seleccionado va a ser usado sin importar la posición del mouse.
También hay una opción adicional en el modo Translate para bloquear el movimiento a un plano en particular (ie, permite arrastrar dos de los ejes mientras se mantiene el tercero sin cambios). Los tres cuadrados pequeños coloridos alrededor del centro del Translate gizmo activa el bloqueo para cada plano; los colores corresponden al eje que va a ser bloqueado cuando el cuadrado sea clickeado (eg, azul bloque el eje Z).
Parenting es uno de los conceptos más importantes que entender cuando se usa Unity. Cuando un GameObject es un Parent de otro GameObject, el GameObject Child va a moverse,rotar, y escalar exactamente como su padre(parent) lo haga. Usted puede pensar de parenting como la relación entre sus brazos y su cuerpo; cuando su cuerpo se mueva, sus brazos también se mueven junto con él. Objetos hijo(Child) pueden tener otros hijos(children) de sí mismo y así. Entonces sus manos pueden ser pensadas como “children” de sus brazos y luego cada mano tiene varios dedos, etc. Cualquier objeto puede tener múltiplos hijos(children), pero solo un padre(parent). Estos múltiplos niveles de relaciones padre-hijo forman una jerarquía Transform. El objeto en la parte superior de la jerarquía (ie, el único objeto en la jerarquía que no tiene un parent) es conocido como el root.
Usted puede crear un padre(parent) al arrastrar cualquier GameObject en la Hierarchy View encima de otro. Esto va a crear una relación padre-hijo entre los dos GameObjects.
Tenga en cuenta que los valores del Transform en el Inspector para cualquier GameObject hijo(Child) son mostrados relativamente a los valores del Transform del padre(Parent). Estos valores son referidos como local coordinates.. Devolviendo a la analogía del cuerpo y los brazos, la posición de su cuerpo puede moverse cuando camine, pero sus brazos se van a mantener adjuntos en la misma posición relativa. Para la construcción de una escena, es usualmente suficiente trabajar con coordenadas locales para objetos hijo, pero en la experiencia de juego, a menudo es útil encontrar su posición exacta en el espacio universal o global coordinates. El Scripting API para el Transform Component tiene propiedades separadas para posiciones locales y globales, rotación y escala y también le permite a usted convertir cualquier punto entre coordenadas locales y globales.
El escalado no uniforme es cuando un Scale en un Transform tiene diferentes valores para x, y, y z; por ejemplo (2,4,2). En contraste, el escalado uniforme tiene el mismo valor para x, y, y z; por ejemplo (3,3,3). El Escalado no uniforme puede ser útil en unos poquitos casos específicos pero usualmente debería ser evitado ya que reduce la velocidad de la renderización gráfica. También, introduce un poquito de rarezas que no ocurren con el escalado uniforme.
La escala del Transform determina las diferencias entre el tamaño de un mesh en su aplicación de modelado y el tamaño de ese mesh en Unity. El tamaño del mesh en Unity (y por lo tanto la escala del Transform) es muy importante, especialmente durante la simulación de física. Por defecto, el motor de física asume que una unidad del espacio del mundo corresponde a un metro. Si un objeto es muy grande, puede parecer que cayera en “cámara lenta”; la simulación es actualmente correcta ya que efectivamente, usted está viendo un objeto muy grande caer una gran distancia.
Hay tres factores que pueden afectar la escala de su objeto:
Idealmente, usted no debe ajustar la Scale de su objeto en el Transform Component. La mejor opción es crear sus modelos en una escala de la vida real para que tenga que cambiar la escala del Transform. La siguiente mejor opción es ajustar la escala la cual su mesh está siendo importado en las Import Settings de su mesh individual. Ciertas optimizaciones ocurren basadas en el tamaño de importación, e instanciando un objeto que tiene un valor de escala adjustado puede disminuir el rendimiento. Para más información, ver la sección acerca de optimizar la escala en la página del Rigidbody component.