Esto es lo que sucede de solo dejar transform.Rotate(), el objeto gira sobre si mismo.
Introducción
Bienvenida al curso
Introducción a los Scripts en Unity: Ciclo de vida y métodos
OnDisable, OnDestroy, OnMouseDown
Usando la consola de una forma muy pro
Propiedades públicas y privadas, [SerializeField], [Header] y [HideInInspector]
Clases serializables
Causar cambios
El componente transform y los vectores
Manipulando al componente Transform
Manipulando al componente Transform: rotación y escala
Manipulando al componente Transform: vectores direccionales
Interpolaciones
Tiempo
Tiempo en Unity
Contando el tiempo: tiempo total y tiempo delta
Movimiento y tiempo
Creando movimiento independiente del framerate
Interacción
GameObjects que responden a su entorno
Leyendo al jugador (teclado)
Leyendo al jugador (teclado y gamepad)
Comunicación
Encontrando componentes
Hijos y padres
Comunicación telepática: eventos
Arquitectura
Inicializando variables
Configuración, Información e Inicialización
Cierre
Despedida del curso
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
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.
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);
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.
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);
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.
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.
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.
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!
Aportes 6
Preguntas 0
Esto es lo que sucede de solo dejar transform.Rotate(), el objeto gira sobre si mismo.
El cubo se mueve al inicio de la posicion indicada, ya que se llama la funcion desde el start por lo que solo se ejecuta una vez y desde que se llama se puede modificar libremente
El cubo se puede mover después de poner Vector3(1, 2, 3) por que esta orden solo se ejecuta en start 1 sola vez después de ahí no necesariamente debe de tener la misma posición, pero si en vez de poner la orden en start se pondría en update por ejemplo serias incapaz de mover el objeto por que su posición se estaría actualizando a Vector3(1, 2, 3) por cada frame constantemente.
También podríamos moverlo sumándole el vector de dirección local
transform.position += transform.forward * speed
Creo que es por que ese “seteo” solo se realiza al comienzo del ciclo de vida del gameObject.
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?