Introducció
En aquest curs, s’ha vist pas per pas com construir un model 3D de dos robots i s’ha creat desde zero les seves animacions corresponents (a tenir en compte: atac, defensa, moviment, mort i estàtic). En aquesta última entrega es desenvouparà un joc de lluites incorporant aquests elements.
Joc pujat al drive: https://drive.google.com/file/d/1-3Y7mxidDEZgoWxsRzLo29FpTkHCK-fn/view?usp=drive_link
Correccions en les animacions
Els primers problemes van venir en exportar les animacions a Unity ja que el motor gràfic necessita d’unes certes correcions per funcionar tal com es veu a Maya. A continuació, s’enumeren les difcultats trobades en aquest apartat
-Problema amb el rig del peu: Desafortunadament, es va obsevar que, al importar l’animació del robot 2 (el blanc) a Unity, el peu esquerre no estava correctament conectat a seu òs superior (en aquest cas lower leg). Això provocava que Unity no llegís bé l’estructura òssea i no pogués desenvolupar un rig humanoide correcte. Es va decidir tornar a Maya, desencaixar el peu i tornar-ho a connectar. Això provoca que aquest peu, si un es fixa molt, faci un moviment diferent del seu parell però no s’aprecia gaire. En la següent figura, s’observa com quedava el peu al desencaixar-lo.
-Posició del robot 1 en l’animació: Un altre problema que va sorgir durant els primers compassos va ser que Unity interpretava incorrectament la posició incial de l’animació, produint un gir de casi 45 graus (provocant que el robot ataqués en diagonal en comptes de recte). Això es va solucionar canviant l’0pció de Root Transforn Rotation de l’animació a Original en comptes de Body Orientation.
En les següents figures s’aprecia el canvi d’orientació. La figura dreta és la correcta.
-Problema típic del model movent-se cap adalt: Per últim, un problema comú que va sorgir va ser que el model, una vegada exportat, es movia cap adalt. Això es va corregir, canviant l’opció a Center of Mass en el Root Transfrom Position (Y).
Controlador d’animacions
El controlador d’animacions pels dos robots va acabar sent de la següent manera:
L’animació d’entrada es l’anomenada Idle (repòs) i per tant, només encendre el programa els robots aniran cap aquest estat. Des d’aquí hi ha un paràmetre float, anomenat Run, que incialment es zero però que quan els robots es moguin variará. Aquest paràmetre controlarà l’animació Movement i l’activarà quan Run sigui diferent a zero i la desactivarà quan torni al seu valor original.
Per les animacions Block, Death i Attack s’ha decidit que s’activin des de Any State per poder fer els canvis d’animació instantàneament sense passar per Idle. Els paràmetres són de tipus Trigger i, quan s’apreta la tecla corresponent, s’activa l’estat especificat. Per impedir que les animacions es superposin, es controla la duració de les animacions mitjançant codi de la següent manera:
El mètode GetCurrentAnimatorStateInfo() permet comprobar si l’animació entre cometes está activa o no. Si una animació está activa no es permetrá començar d’altres. El mètode Block() no té aquesta restricció (intencionalment) per permetre bloquejar de forma ràpida, interrumpent altres animacions si es necessari. El mètode Death(), inclou la destrucció del codi i per tant no pot ser interrumput.
A mode d’exemple s’incorpora el mètode Attack():
On es pot veure que s’invoca a un mètode (amb Invoke) que provocará l’activació del Collider de l’espasa per tal de controlar quan els cops d’un robot impacten contra l’altre. Com que les animacions que es van exportar eren ReadOnly (no es va poder fer d’una altra manera) no es va poder utilitzar l’Animation de Unity per tal d’especificar en quin moment de l’animació acitvar el Collider dels cops. Alternativament, es va mesurar el temps en el que l’espasa estava recta i es va escruire en el codi, directament, en quin moment passava això. Tambés es pot veure en el codi que es para el so del moviment del robot i s’activa el so de l’espasa.
Elements de Gameplay afegits
Aquí s’enumeren elements de joc que s’han pogut afegir
-S’ha pogut realitzar un menu inicial, que permet començar nova partida i sortir del programa.
-S’ha implementat una barra de vida i es té en compte que els cops bloquejats no resten vida. Quan la vidda arriba a zero, el robot mor i surt un menú on s’indica quin robot ha guanyat, un botó per tornar a jugar i un botó per sortir.
-L’espasa emet soroll a l’atacar. També hi ha so pels cops bloquejats i els cops que resten vida. El robot emet so quan es mou i també hi ha música de fons.
Valoració de futur
Assets
Els assets de tercers utilitzats són els següents:
So:
RibhavAgrawal Pixabay (block)
Mixkit.co (hit and sword sound)
jeussfl2009 (backgorund)
DavidDumaisAudio (robot steps)
Models 3D:
Debatcontribution 0el Joc de lluites amb les animacions i models fets als curs
No hi ha comentaris.
Heu d'iniciar la sessió per escriure un comentari.