Implementar las mecánicas es un paso fundamental en cualquier juego, y Gäelith no es una excepción. He implementado el movimiento básico tanto del personaje protagonista como para los bloques de piedra. Para ello he utilizado uno de los plugins más populares de Unity: DOTween. Según su descripción oficial, DOTween es «una librería de animación orientada a objetos rápida, eficiente y completamente segura para ser utilizada en Unity, optimizada para usuarios de C#, gratuita y de código abierto, con numerosas características avanzadas». Estoy completamente de acuerdo: es una herramienta fantástica que simplifica la gestión de animaciones y que ofrece una gran flexibilidad de acciones.
Aplicando la librería DOTween
De momento el movimiento de Gäelith es provisional: puede caminar hacia adelante, retroceder y rotar hacia los lados. Sin embargo planeo perfeccionarlo más adelante con un sistema completo basado en físicas e incluso me planteo la opción de poder controlarlo mediante clics del ratón. En cambio, los movimientos de los bloques de piedra permanecerán como están, utilizando DOTween. Cuando Gäelith empuja una piedra esta se desliza suavemente por el suelo hasta chocar con un obstáculo y detenerse.
Un aspecto clave al trabajar con DOTween es elegir las funciones de easing adecuadas. El easing determina cómo un objeto acelera o desacelera al inicio y al final de su movimiento, haciendo que las animaciones se integren mejor y no resulten artificiales. Si no estás familiarizado con el concepto de easing, puedes consultar esta excelente referencia visual: easings.net.
Para ajustar el movimiento de las piedras probé dos efectos de suavizado diferentes: OutCirc y OutCubic. En el vídeo incluido en esta publicación puedes ver una comparación entre ambas opciones. Después de analizarlas OutCubic fue el claro ganador, ya que produjo un movimiento más fluido y natural.
Precisión con las físicas de Unity
Uno de los mayores desafíos fue garantizar que los cálculos de movimiento fueran precisos y estuvieran alineados con el sistema de cuadrícula del juego. Gäelith se mueve en un sistema estructurado de coordenadas 2D, por lo que cada movimiento debe encajar perfectamente en este diseño tipo «tablero de ajedrez».
Inicialmente utilicé pequeños colliders situados alrededor de Gäelith y en los laterales de las piedras para detectar interacciones. Este enfoque funcionaba en la mayoría de las ocasiones, pero en movimientos realmente rápidos el sistema de eventos a veces fallaba al detectar colisiones, lo que generaba comportamientos inconsistentes.
Para solucionarlo reestructuré todo y empecé a utilizar raycasts, aprovechando el motor de físicas de Unity para una detección fiable y precisa. Con los raycasts pude detectar obstáculos con precisión y asegurar que los movimientos permanecieran completamente alineados con la cuadrícula. Este cambio mejoró inmediatamente la fiabilidad y me permitió completar rápidamente dos funcionalidades clave del Documento de Project Design Document (PDD): F.1.02 Gäelith Movements y F.1.03 Stone Movements.
El juego comienza a tomar forma
Con los movimientos e interacciones implementados Gäelith ya empieza a dar sensaciones de un juego real. Es una gran satisfacción ver cómo las cosas van encajando, y cómo Gäelith puede desplazar bloques de piedra y moverse por el escenario. Y todavía queda mucho por venir. Mantente atento para la próxima actualización mientras sigo refinando las mecánicas y expandiendo este mundo de puzles y magia.
