Publicat per

Juego Robot Fight

Publicat per

Juego Robot Fight

Link https://play.unity.com/en/games/ccd89a89-07d4-46ef-8eea-82f68caec39c/robot-fight Introducción El presente proyecto tiene como objetivo el desarrollo de un juego de lucha entre dos robots animados, empleando el…
Link https://play.unity.com/en/games/ccd89a89-07d4-46ef-8eea-82f68caec39c/robot-fight Introducción El presente proyecto tiene como objetivo el desarrollo de un juego de lucha entre dos robots…

Link

https://play.unity.com/en/games/ccd89a89-07d4-46ef-8eea-82f68caec39c/robot-fight

Introducción

El presente proyecto tiene como objetivo el desarrollo de un juego de lucha entre dos robots animados, empleando el motor Unity y utilizando máquinas de estados, Animator Controllers  y transiciones entre animaciones. Durante las prácticas previas se prepararon los modelos y las animaciones en formato FBX, incluyendo los estados Idle, Walk, Attack, Defend y Death. En esta última entrega se integraron todas las animaciones, se diseñó la lógica de control de los personajes, la detección de colisiones y los sistemas complementarios de interfaz, sonido, menú, cámara y fin de partida. El resultado es un prototipo jugable completamente funcional, con dos personajes controlables, animaciones coherentes, efectos de sonido, música de fondo, sistema de vida, menú principal y pantalla de victoria.

Desarrollo del Juego

  • Integración de las animaciones: Para las animaciones se configuraron dos Animator Controllers independientes, uno para cada robot. Cada controlador contiene los estados Idle, Walk, Attack, Defense y Death, con transiciones definidas mediante parámetros y condiciones lógicas.
  • Control de los personajes: Para controlar los personajes fue creado un script RobotFighterController para cada robot, utilizando el nuevo sistema de Input de Unity. El primer jugador se controla con las teclas A / D / F / R, y el segundo con J / L / H / Y. El script gestiona movimiento, ataque, defensa, daño, muerte y orientación automática según la dirección del desplazamiento. 
  • Sistema de vida y combate:  Para la vida se implementó el script RobotHealth utilizando un slider para representar la vida en una barra. Cada ataque reduce la salud del oponente si este no se encuentra defendiendo, mientras que el estado de defensa bloquea el daño y reproduce un sonido de bloqueo. 
  • Pausa, menú y UI: Se añadió un menú principal con botones sonoros, un panel de controles y un sistema de pausa/mute. Durante la pausa el juego se detiene completamente (Time.timeScale = 0), se desactiva el input y se muestra un panel con el texto Pausa.
  • Pantalla de victoria: Cuando la salud de uno de los robots llega a cero, se activa la animación de muerte y tras unos segundos se carga la escena WinScene, donde se muestra el robot ganador, un texto indicando el nombre del robot ganador (Robotina o Nono), música de victoria y dos botones, uno para volver a jugar y otro para el menú principal. 
  • Efectos sonoros y música: Efectos para ataque, impacto, bloqueo, pasos y muerte. Música de fondo en el combate y en la escena de victoria. Sonidos asociados a los botones del menú y sistema global de mute que afecta a todo el AudioListener. 
  • Decoración y escenario: Se añadieron paredes, suelo y materiales metálicos para simular un entorno de combate tipo arena. Se ajustó la iluminación y la cámara para una visión lateral adecuada al estilo de juego. 
  • Cámara dinámica: Se creó un script FightCameraController que sigue a ambos personajes y ajusta el zoom dinámicamente según la distancia entre ellos.

Animator Controllers

Parámetros utilizados

  • float Speed: controla la transición entre Idle y Walk.
  • trigger Attack: activa la animación de ataque.
  • bool Defend: activa la defensa mientras se mantiene pulsada la tecla.
  • bool Dead: determina la animación de muerte.
  • float DefendSpeed: controla la velocidad del clip de defensa, permitiendo mantener la pose final mientras se mantiene la tecla de defensa.

Transiciones y condiciones

  • Idle: estado por defecto. Se reproduce cuando el personaje no se desplaza ni realiza acciones.
  • Walk: animación en bucle cuando el jugador se mueve.
  • Punch (Attack): animación no cíclica que se ejecuta una vez al atacar.
  • Defense (Defend): animación defensiva que se activa mientras el jugador mantiene la tecla.
  • Death: animación final cuando la vida llega a 0.

Configuración de clips (Loop)

  • Idle y Walk: Loop Time ON, para repetirse sin saltos.
  • Punch y Death: Loop Time OFF, para ejecutarse una sola vez.
  • Defense: se gestiona como una defensa mantenida. Para evitar que vuelva a idle mientras la tecla sigue pulsada, se ajustó la velocidad del estado usando un parámetro.

Visión de futuro

Este prototipo sirve para demostrar las bases de un juego de lucha. En el futuro, el proyecto podría evolucionar hacia un producto más complejo con:

  • Combos y ataques especiales, gestionados con un sistema de estados adicionales.
  • IA enemiga, permitiendo luchar contra el ordenador.
  • VFX y partículas, para impactos, chispas o explosiones.
  • Menú de selección de personajes y varios escenarios.
  • Modo multijugador local/online.
  • Optimización para móviles (controles táctiles y HUD adaptativo).
  • Sistema de puntuación y registro de victorias.

Conclusión

El proyecto cumple con los objetivos planteados: integrar animaciones, programar controles y lograr un juego jugable, con transiciones suaves, efectos de sonido coherentes, cámara funcional y estética cuidada. A nivel personal, esta práctica permitió comprender el flujo completo de producción de un juego en Unity, desde la configuración del Animator Controller hasta la lógica de scripts, la integración de audio y la publicación WebGL. El resultado final es un prototipo sólido que combina programación, animación y diseño, demostrando la relación entre arte y técnica en el desarrollo de videojuegos.

Gameplay

Debat0el Juego Robot Fight

No hi ha comentaris.

Publicat per

Actividad R3. Media para Videojuegos

Publicat per

Actividad R3. Media para Videojuegos

Introducción En esta tercera práctica había que crear el rig de los robots modelados anteriormente. El objetivo era generar dos versiones diferentes:…
Introducción En esta tercera práctica había que crear el rig de los robots modelados anteriormente. El objetivo era generar…

Introducción

En esta tercera práctica había que crear el rig de los robots modelados anteriormente. El objetivo era generar dos versiones diferentes: una creada manualmente en Maya (en mi caso utilicé Blender para realizarla mediante el add-on de rig humano) y otra utilizando el sistema automático de Mixamo. A lo largo del proceso encontré varios desafíos técnicos que me permitieron comprender mejor cómo funciona la relación entre esqueleto, pesos y deformación de la malla.

Drive: 

https://drive.google.com/drive/folders/1HEFsW46dQojQpPvkppn2On5CRNctHvfS?usp=sharing

Rig manual en Blender

Para comenzar el rig manual, habilité el add-on Rigify, ya que proporciona una estructura inicial de esqueleto humano que sirve como base para colocar los huesos principales de forma más organizada. Tras añadir el esqueleto, el siguiente paso fue emparejar cada hueso con la parte del cuerpo correspondiente del robot. Una vez colocados todos los huesos, procedí a vincular la armature y la mesh utilizando el método de “Automatic Weights” como punto de partida. Como es habitual con este tipo de automatización, algunas zonas se deformaban de manera incorrecta al rotar ciertos huesos. Para solucionar esto utilicé la herramienta “Weight Paint” para ajustar manualmente la influencia de cada hueso sobre la malla. Finalmente, probé diferentes posiciones, exporté el resultado a FBX y verifiqué en Unity que la estructura se importaba correctamente.

Rig en Mixamo

Después de terminar el rig manual, decidí probar con Mixamo para comparar. Subí el robot en FBX con las texturas ya aplicadas esperando que el proceso fuera más rápido. Sin embargo, me encontré con que el rig automático deformaba partes del modelo de forma extraña, especialmente en las articulaciones.

Comparando ambos enfoques, el rig manual consume bastante más tiempo y requiere paciencia, pero a cambio se tiene más control sobre cada hueso y cómo afecta a la malla. Además, se puede adaptar a cualquier personaje, sin importar lo alejado que esté de la anatomía humana. Mixamo,por otro lado, es increíblemente rápara modelos que tienen proporciones humanoides, pero se complica cuando te sales un poco de ese molde.

Debat0el Actividad R3. Media para Videojuegos

No hi ha comentaris.

Publicat per

Actividad R1 – Media para Videojuegos – Aula 1

Publicat per

Actividad R1 – Media para Videojuegos – Aula 1

1. Proceso Creativo Bocetos iniciales Para la concepción de los bocetos me apoyé en un moodboard con referencias de robots extraídas de…
1. Proceso Creativo Bocetos iniciales Para la concepción de los bocetos me apoyé en un moodboard con referencias de…

1. Proceso Creativo

Bocetos iniciales

Para la concepción de los bocetos me apoyé en un moodboard con referencias de robots extraídas de Pinterest, de juegos y películas, manteniendo una estética “atomic/retro”, imaginando un mundo donde la tecnología siguió avanzando, pero la estética quedó parada en las décadas del 80 y 90. Este tipo de estética se caracteriza por tener formas redondeadas y modulares, así como antenas y tornillos sobresalientes y engranajes a la vista, lo que transmite un aspecto más cargado y menos minimalista. La elección de este tema se debe a mi interés sobre esta época, los refugios nucleares y juegos como Fallout y Lies of P. 

Moodboard

Moodboard

Una vez que ya tenía una idea clara de lo que quería conseguir, comencé a hacer algunas pruebas de dibujos, creando diversas formas hasta encontrar un aspecto acorde con mi concepto. Para lograrlo utilice, lápiz, goma, un cuaderno, regla, papel de calco y lápices de colores.

Robot – 1

Para el primer robot opté por una interpretación femenina, con un corazón como detalle principal en el pecho, un peinado inspirado en los años 60 y proporciones suavizadas para sugerir rasgos femeninos, sin perder la lectura mecánica del diseño.

Robot – 1

Bocetos-Iniciales-Robot-1

Robot – 2

Para el segundo robot opté por una interpretación masculina, donde el detalle principal es un engranaje en el pecho, cabello corto y un pequeño sombrero para dar un toque de personalidad. Ajusté la silueta de forma a conseguir un cuerpo masculino.

Robot – 1

Bocetos-Iniciales-Robot-2

Color

Una vez los dibujos estaban hechos, los pasé a otra hoja utilizando papel de calco, de esta forma podía conservar el original y darles color sin necesidad de volver a dibujarlos. Utilicé lápices de colores que remiten al metal, negros y grices para mantener la estética, complementados con otros tonos más claros como rosas, verdes y azules.

Bocetos-Iniciales-Robot-1-Color

Bocetos-Iniciales-Robot-2-Color

Posiciones de Ataque y Defensa 

Para las posiciones de ataque y de defensa me enfoqué en el elemento principal de cada robot como recurso para atacar o protegerse. En el caso del Robot 1, utiliza el corazón para crear un escudo de protección y para atacar lanza corazones como proyectiles. El mismo criterio se aplica al Robot 2, pero en su caso emplea el engranaje tanto para atacar como para defender.

Robot 1 – Ataque y Defensa

Bocetos-Iniciales-Robot-1-Ataque

Bocetos-Iniciales-Robot-1-Defensa

Robot 2 – Ataque y Defensa

Bocetos-Iniciales-Robot-2-Ataque

Bocetos-Iniciales-Robot-2-Defensa

Bocetos técnicos

Robot – 1 Boceto técnico

Boceto-Tecnico-Robot-1

Robot – 2 Boceto técnico

Boceto-Tecnico-Robot-2

Creando los modelos 3D

Para crear los modelos utilicé el programa Blender, herramienta con la que ya tenía algunos conocimientos básicos sobre su utilización. Importé las imágenes de los bocetos técnicos, frontal y lateral,  como referencias en el “viewport” para poder construir los modelos. Durante el modelado utilicé varios “Modifiers” como “Mirror” para mantener la simetría y acelerar el trabajo  y “Subdivide Surface” para suavizar y obtener volúmenes orgánicos en piezas curvas como el cabello y para finalizar utilicé “Auto Smooth” para dar suavidad y claridad a los planos.

Robot – 1 Modelo 3D 

Robot-1-3d-1

Robot – 2 Modelo 3D

Robot-2-3d-1

Robot-2-3d-2

Robot-2-3d-3

Robot-2-3d-5

Robot-2-3d-4

Sketchfab

Robot – 1

Robot – 2

2. Dificultades encontradas 

Para la realización de este desafío, la mayor dificultad fue la creación de los bocetos, tanto iniciales como técnicos, porque no tengo tanta facilidad para dibujar. Aun así, fui capaz de crear todos los elementos de los que componen los bocetos. Aunque fue exigente, realicé un buen trabajo y superé la dificultad, ganando seguridad para trasladar el diseño al modelado 3D. 

3. Comentarios

Este ejercicio me resultó especialmente interesante porque me permitió comprender el proceso completo de la concepción de un modelo 3D, pasando por la creación de un moodboard, los bocetos iniciales, técnicos y la modelación 3D. También me ayudó a practicar habilidades diversas y a usar herramientas que habitualmente no utilizaría.

Debat0el Actividad R1 – Media para Videojuegos – Aula 1

No hi ha comentaris.