Contenido del curso

Mecánica Principal

Mover piezas en Unity con DOTween

Resumen

Mover piezas en Unity con DOTween te permite añadir animaciones suaves y controladas a tus objetos sin escribir lógica compleja de interpolación. Si estás construyendo un juego de tablero o cualquier proyecto que requiera desplazar elementos entre coordenadas, esta integración resuelve el movimiento con pocas líneas de código y un easing profesional.

¿Qué es DOTween y cómo se instala en Unity?

DOTween es una librería de animación gratuita disponible en la Unity Asset Store que facilita mover, rotar y escalar objetos con curvas de animación predefinidas. Para instalarla, busca en Google dotween Unity y abre el resultado oficial de Hotween v2 en la tienda de Unity.

¿Qué hace DOTween en Unity? Permite animar propiedades de un objeto, como su posición, hacia un valor destino en un tiempo determinado, con suavidad y eventos de finalización.

Con tu sesión de Unity iniciada, agrega el asset a tus assets y luego pulsa Open in Unity. Esto abre el Package Manager dentro de tu proyecto. Importa el paquete y, cuando termine, ve al menú Tools > Demigiant > DOTween Utility Panel y haz clic en Setup DOTween para completar la configuración.

¿Por qué hay que hacer el setup después de importar?

El setup ejecuta procesos internos que enlazan DOTween con los módulos de Unity que estás usando. Sin ese paso, varias funciones de la librería no responden correctamente.

¿Cómo programar el movimiento de una pieza con DOTween?

En tu carpeta de scripts, abre el script de pieza en Visual Studio y al inicio del archivo importa la librería con using DG.Tweening;. Esto te da acceso a las funciones de animación que vas a encadenar.

Después de tu función setup, agrega una nueva función pública llamada move que reciba dos parámetros enteros: el destino en X y el destino en Y. Dentro de ella vas a usar transform.DOMove, que es la función estrella de la librería para desplazar objetos.

csharp using DG.Tweening;

public void Move(int desX, int desY) { transform.DOMove(new Vector3(desX, desY, -5), 0.25f) .SetEase(Ease.InOutCubic) .OnComplete(() => { x = desX; y = desY; }); }

El primer parámetro de DOMove es un Vector3 con las coordenadas destino, dejando el eje Z en -5 para mantener la pieza al frente. El segundo parámetro es la duración: en este caso 0.25 segundos, lo que da un movimiento rápido pero perceptible.

¿Para qué sirve SetEase y qué es InOutCubic?

SetEase aplica una curva de aceleración al movimiento para que no sea lineal. Con Ease.InOutCubic la pieza arranca lento, acelera en el medio y desacelera al llegar, lo que se ve mucho más natural que un desplazamiento mecánico.

¿Qué hace OnComplete al terminar el movimiento?

OnComplete recibe una función lambda que se ejecuta cuando la animación termina. Aquí actualizas las propiedades internas x e y de la pieza con los valores desX y desY, para que la lógica del juego sepa la nueva posición real en el tablero.

¿Cómo probar funciones de Unity con ContextMenu?

Probar el movimiento sin construir toda la mecánica del juego es posible gracias al decorador [ContextMenu], que añade un atajo personalizado al menú contextual del componente en el inspector.

Crea una función de prueba sin parámetros que llame a Move con coordenadas fijas, por ejemplo Move(0, 0). Encima de la función agrega el decorador con el nombre que quieras ver en el menú.

csharp [ContextMenu("Test Move")] public void MoveTest() { Move(0, 0); }

¿Cuándo usar ContextMenu en Unity? Cuando necesitas probar rápidamente una función desde el editor sin crear UI ni botones. La función debe ser pública y no recibir parámetros.

Guarda el archivo, vuelve a Unity, dale play y selecciona una pieza del tablero. En el componente de la pieza, haz clic en los tres puntos del encabezado y verás Test Move dentro del menú contextual. Al pulsarlo, la pieza se desplaza al destino que definiste.

Si pruebas con una pieza lejana, notarás que 0.25 segundos puede sentirse muy veloz; si la pieza está cerca, el tiempo se siente justo. Ese parámetro lo ajustas según la sensación que quieras dar al jugador.

¿Qué sigue después de mover piezas en Unity?

Ya tienes piezas que se mueven con animación suave y actualizan su posición lógica al terminar. El siguiente reto es decidir cuándo se mueven y a dónde, conectando la entrada del jugador o la lógica del juego con esta función Move.

¿Cómo crees que se puede controlar el momento y el destino del movimiento? Cuéntame en los comentarios cómo lo resolverías tú.