Manipulando al componente Transform: rotación y escala
Clase 9 de 24 • Curso de Introducción a Unity: Scripting
Resumen
¿Cómo manipular componentes transform en Unity?
La manipulación de componentes transform en Unity nos permite establecer y modificar la posición, rotación y escala de nuestros objetos en el juego. A través de estas propiedades podemos crear dinámicas interesantes y animaciones envolventes. Esta guía te llevará a explorar algunos conceptos clave sobre cómo trabajar con estos componentes desde el código.
¿Cómo funciona la posición del objeto?
En Unity, la posición de un objeto se define mediante un constructor de tipo Vector3
, que representa las coordenadas X, Y, Z en el espacio 3D.
transform.position = new Vector3(1, 2, 3);
- X: derecha/izquierda
- Y: arriba/abajo
- Z: adelante/atrás
Al ubicar este código en el método Start
, el objeto se desplazará a una posición específica al inicio del juego. Aun así, el objeto puede ser movido manualmente después, porque Start
se ejecuta una sola vez. Si en lugar de Start
usamos Update
, la posición se forzará continuamente cada fotograma, impidiendo el movimiento manual.
¿Cómo ajustar la rotación de un objeto?
La rotación de los objetos en Unity utiliza cuaterniones (quaternions), que proporcionan una forma estable y eficiente de representar rotaciones sin el problema del "bloqueo de Gimbal".
transform.rotation = Quaternion.Euler(10, 45, 20);
- X (10 grados): rotación como afirmación ("sí").
- Y (45 grados): rotación como negación ("no").
- Z (20 grados): rotación como si un perro inclina la cabeza.
¿Cómo mover objetos sobre ejes específicos?
Podemos trasladar objetos continuamente usando vectores pequeños que, al sumarse, crean movimientos fluidos al dibujarse varios fotogramas por segundo.
transform.position += new Vector3(0, 0, 0.05f);
Al sumar un Vector3
pequeño al eje Z global, el objeto se moverá suavemente hacia adelante. No olvides la f
al final de los números decimales para asegurarte de que Unity los trate como float
.
Para movimientos relativos, es preferible usar el método translate
, que opera en espacio local:
transform.Translate(0, 0, 0.05f);
Esto asegura que el objeto se mueva conforme a su orientación, no respecto a un sistema de referencia global.
¿Cómo se ajusta la escala de un objeto?
La escala de un objeto se modifica a través de la propiedad localScale
, debido a que la escala global puede ser compleja de manejar.
transform.localScale += new Vector3(0, 0, 0.05f);
La variable localScale
permite aumentar de manera sostenida el tamaño del objeto en el eje Z en un 5% cada fotograma. Este ajuste será uniforme, sin importar la rotación del objeto.
¿Cómo funcionan las posiciones locales y globales?
Las diferencias entre position
y localPosition
surgen principalmente en escenarios jerárquicos. Un objeto hijo seguirá a su padre respecto a su localPosition
, pero position
define su ubicación en el mundo global.
- localPosition: Relativo al espacio del componente padre.
- position: Independiente y a nivel global.
Por ejemplo, si un cubo está dentro de un objeto vacío reducido, su desplazamiento local
parecerá menos debido a la propia limitación del espacio del padre.
Con estas herramientas y entendimiento, estarás mejor preparado para desarrollar mecánicas más interesantes al manipular objetos en Unity. Sigue explorando y compartiendo tus experiencias para mejorar continuamente tus habilidades en el desarrollo de videojuegos. ¡Adelante!