09/03/2013
Crear animaciones fluidas y dinámicas es uno de los pilares para dar vida a cualquier videojuego. Sin embargo, programar estas animaciones desde cero en Unity puede ser un proceso complejo y tedioso, especialmente si no recuerdas la sintaxis exacta o necesitas implementar lógicas de movimiento avanzadas. Afortunadamente, existe una herramienta que simplifica enormemente este proceso: iTween. En este artículo, exploraremos a fondo este increíble framework, desde sus funciones más básicas hasta técnicas avanzadas que te permitirán crear efectos visuales espectaculares con apenas unas pocas líneas de código.

¿Qué es iTween y por qué es tan popular?
iTween es un framework de animación para Unity, robusto y probado en batalla, utilizado incluso por estudios de renombre como Square-Enix. Su principal objetivo es facilitar la interpolación de valores a lo largo del tiempo, lo que en términos prácticos se traduce en la capacidad de mover, rotar, escalar, desvanecer y cambiar colores de objetos de manera sencilla y controlada. Es una solución gratuita que puedes descargar directamente desde la Asset Store de Unity.
La magia de iTween reside en su simplicidad. En lugar de lidiar con cálculos matemáticos complejos para crear un movimiento parabólico o una curva de aceleración suave, iTween te permite lograrlo con una sola llamada a una función. Esto no solo acelera drásticamente el tiempo de desarrollo, sino que también hace que el código sea más limpio, legible y fácil de mantener.
Instalación y Primeros Pasos
Antes de sumergirnos en los ejemplos, necesitas tener iTween en tu proyecto. La forma más común y sencilla es a través de la Unity Asset Store. Sin embargo, para desarrolladores más avanzados que utilizan sistemas de gestión de paquetes, existen otras alternativas.
Métodos de Instalación
- Unity Asset Store: La vía recomendada para la mayoría de los usuarios. Simplemente busca "iTween" en la tienda y añádelo a tus assets.
- OpenUPM: Si utilizas este gestor de paquetes de línea de comandos, puedes instalarlo con el comando:
openupm add com.pixelplacement.itween. - Git URL: Puedes añadir iTween directamente a tu proyecto editando el archivo
Packages/manifest.jsony añadiendo la dependencia del repositorio de GitHub.
Funciones Básicas de Animación: El Corazón de iTween
Una vez instalado, puedes empezar a animar cualquier GameObject en tu escena. La mayoría de las funciones de iTween utilizan un sistema de parámetros basado en `iTween.Hash()`, que permite pasar argumentos de forma clara y flexible.
Mover un Objeto (MoveTo)
Probablemente la función más utilizada. Permite mover un GameObject de su posición actual a una nueva en un tiempo determinado.

// Mueve el GameObject a la posición x = 5 en 1 segundo, usando coordenadas locales. iTween.MoveTo(gameObject, iTween.Hash("x", 5, "time", 1, "islocal", true));Parámetros clave:
"x", "y", "z": Los valores del eje al que quieres mover el objeto."time": La duración de la animación en segundos."islocal": Si es `true`, el movimiento se basa en el espacio local del objeto (relativo a su padre); si es `false`, usa coordenadas globales.
Escalar un Objeto (ScaleTo)
Cambia el tamaño de un GameObject a lo largo del tiempo.
// Escala el GameObject al doble de su tamaño en los ejes X e Y durante 1 segundo. iTween.ScaleTo(gameObject, iTween.Hash("x", 2, "y", 2, "time", 1));Desvanecer un Objeto (FadeTo)
Ideal para efectos de aparición o desaparición. Funciona alterando el canal alfa del color del material del objeto.
// Desvanece el objeto a la mitad de su opacidad (transparente) en 1 segundo. iTween.FadeTo(gameObject, iTween.Hash("alpha", 0.5, "time", 1));Rotar un Objeto (RotateTo)
Permite rotar un GameObject a un ángulo específico.
// Rota el objeto 45 grados sobre su eje Z en 2 segundos. iTween.RotateTo(gameObject, iTween.Hash("z", 45, "time", 2));Potenciando tus Animaciones: Parámetros Avanzados
La verdadera potencia de iTween se desata cuando comienzas a combinar sus parámetros avanzados para crear comportamientos complejos y pulidos.
Curvas de Animación (EaseTypes)
Por defecto, las animaciones son lineales, pero puedes cambiar su "sensación" usando `easetype`. Esto define la aceleración y desaceleración de la animación, dándole un toque más orgánico y profesional.

// Mueve el objeto con un efecto elástico al final. iTween.MoveTo(gameObject, iTween.Hash("x", 3, "time", 2, "easetype", iTween.EaseType.easeOutElastic));Puedes declarar una variable pública de tipo `iTween.EaseType` en tu script para poder seleccionarla cómodamente desde el Inspector de Unity, lo que facilita la experimentación.
Ejecutar Funciones al Completar (oncomplete)
¿Necesitas que algo ocurra justo cuando una animación termina? El parámetro `oncomplete` te permite llamar a una función de tu elección. ¡No olvides incluir `oncompletetarget` para que iTween sepa en qué objeto buscar la función!
void StartAnimation() { // Mueve el objeto y llama a 'ActionAfterTweenComplete' cuando termine. iTween.MoveTo(gameObject, iTween.Hash("x", 5, "time", 2, "oncomplete", "ActionAfterTweenComplete", "oncompletetarget", gameObject)); } void ActionAfterTweenComplete() { Debug.Log("¡La animación ha terminado!"); }Retrasos y Bucles
Con `delay`, puedes hacer que una animación espere unos segundos antes de empezar. Con `looptype`, puedes hacer que se repita. El valor `"pingpong"` es especialmente útil para crear movimientos de vaivén.
// Mueve el objeto arriba y abajo en un bucle infinito. iTween.MoveTo(gameObject, iTween.Hash("y", 3, "time", 1.4, "looptype", "pingpong", "easetype", iTween.EaseType.easeInOutQuad));Animar Colores y Variables (ColorTo y ValueTo)
iTween no se limita a transformar GameObjects. Puedes animar colores de materiales o incluso valores numéricos arbitrarios.
// Anima el color del material de un objeto a rojo. iTween.ColorTo(myGameObject, Color.red, 1.0f); // Anima un valor numérico de 1 a 100 y lo actualiza en una función. iTween.ValueTo(gameObject, iTween.Hash("from", 1, "to", 100, "time", 3, "onupdatetarget", gameObject, "onupdate", "UpdateCounter")); void UpdateCounter(int newValue) { // Aquí podrías actualizar un texto de puntuación en la UI, por ejemplo. Debug.Log("Valor actual: " + newValue); }La función `ValueTo` es extremadamente versátil y abre la puerta a animar prácticamente cualquier cosa: la posición de un elemento de la UI, la intensidad de una luz, un parámetro de un shader, etc.
Tabla Comparativa de Funciones Populares
| Función | Descripción | Parámetros Clave |
|---|---|---|
| MoveTo / MoveBy | Mueve un objeto a una posición absoluta o relativa. | x, y, z, time, islocal, easetype |
| ScaleTo / ScaleBy | Escala un objeto a un tamaño absoluto o relativo. | x, y, z, time, easetype |
| RotateTo / RotateBy | Rota un objeto a un ángulo absoluto o relativo. | x, y, z, time, easetype |
| FadeTo / FadeBy | Ajusta la transparencia del material de un objeto. | alpha, time, includechildren |
| ValueTo | Anima un valor (float, int, Vector3, etc.) entre un inicio y un fin. | from, to, time, onupdate, onupdatetarget |
Casos de Uso Avanzados
Más allá de las funciones básicas, iTween puede resolver problemas de animación complejos:
- Movimiento Parabólico: En lugar de usar la física de Unity, puedes simular el arco de un proyectil para que aterrice en un punto exacto, ideal para juegos de artillería o puzzles.
- Cámaras Cinematográficas: Crea impresionantes flythroughs para tus niveles. Puedes definir una ruta para el movimiento de la cámara y, simultáneamente, otra ruta para que la cámara mire, logrando tomas dinámicas y profesionales.
- Personajes sobre Rieles: En juegos como Sonic Unleashed o Klonoa, el personaje sigue una ruta predefinida. Con `PutOnPath`, puedes colocar y mover un personaje a lo largo de una curva, dándole al jugador un control limitado (como saltar o moverse lateralmente) sin desviarse del camino principal.
- Interacción con Físicas: Si aplicas una animación de iTween a un objeto con un componente `Rigidbody`, iTween cambiará automáticamente a un modo compatible con físicas, permitiéndote animar con precisión objetos como palancas, bates de béisbol o flippers de pinball sin interferir con el motor de física.
Preguntas Frecuentes (FAQ)
- ¿iTween es realmente gratuito?
- Sí, es completamente gratuito. Puedes obtenerlo desde la Unity Asset Store o su repositorio oficial en GitHub.
- ¿iTween afecta mucho el rendimiento?
- iTween está muy optimizado. Como con cualquier herramienta, un uso excesivo (cientos de animaciones simultáneas) podría tener un impacto, pero para la gran mayoría de los casos de uso, su rendimiento es excelente.
- ¿Cómo puedo animar un elemento de la UI como un contador de puntos?
- La función `iTween.ValueTo()` es perfecta para esto. Puedes animar un valor numérico de un punto A a un punto B y usar la función de callback `onupdate` para actualizar el texto en la pantalla en cada fotograma de la animación.
- ¿Puedo crear secuencias de animación complejas?
- ¡Absolutamente! La forma más sencilla es encadenar animaciones. En la función que llamas con `oncomplete` al final de la primera animación, puedes iniciar la segunda animación, y así sucesivamente, creando secuencias tan largas y complejas como necesites.
- ¿Cómo detengo una animación que ya ha comenzado?
- Puedes usar `iTween.Stop(gameObject)` para detener todas las animaciones que se están ejecutando en un GameObject específico, o `iTween.Stop()` para detener todas las animaciones de iTween en la escena actual.
En resumen, iTween es una herramienta indispensable en el arsenal de cualquier desarrollador de Unity. Su curva de aprendizaje es suave, pero su techo de habilidad es increíblemente alto. Te permite prototipar rápidamente efectos visuales y pulir las interacciones de tu juego hasta alcanzar un nivel profesional, todo ello mientras mantienes tu código limpio y organizado. Te animamos a experimentar con los ejemplos de este artículo y descubrir todo el potencial que esta fantástica librería tiene para ofrecer.
Si quieres conocer otros artículos parecidos a Domina la Animación en Unity con iTween puedes visitar la categoría Juegos.
