Jump to content
Sign in to follow this  
ElectroMan

Animación repitiéndose hasta tres veces

Recommended Posts

Tengo un personaje A que golpea al enemigo B. En la animación de ataque de A tengo puesto que se active un pequeño trigger que sigue la trayectoria del puño. Luego el enemigo tiene un Gameobject hijo con un Box2D que es también trigger y que activa un script que inicia la animación de movimiento (con SetTrigger("animacionRecibeGolpe")) Creo que debería ir bien pero a la hora de probarlo y ejecutar el puñetazo me sale que entra hasta 3 veces en el método onTriggerEnter2D del Box2D enemigo... La cosa es que si hago la prueba en el animador, avanzado la animación frame a frame o dándole al play va perfecto y solo entra una vez. Entonces esto da problemas de que se repite varias veces el principio de la animación hasta que a la tercera la hace completa...

 

También aprovecho para preguntar si es mejor usar bools o triggers para las animaciones porque me da la sensación de que los triggers fallan mucho y también dan problemas con las transiciones de Any state -> XXXX, entrando varias veces y cosas así. Gracias.

 

Añado: Probando cosas he puesto que el colisionador del puño se active y desactive al siguiente frame de animación. Parece que así funciona y no se vuelve loco el onTriggerEnter2D pero el problema es que va a ser muy difícil hacer una buena detección de enemigos afectados por el puño, si de todo el arco que hace al golpear solo detecta enemigos que estén justamente en ese momento y lugar del arco en el que aparece el colisionador del puño.

Edited by ElectroMan

Share this post


Link to post
Share on other sites

Los eventos de animación, OnTriggerEnter, OnTriggerStay, OnTriggerExit, etc... los activa el componente Rigidbody.

Si mueves los Collider tipo Trigger directamente con el componente Transform, emparentando o sin emparentar, no funcionan.

 

Lo que supongo que esta ocurriendo, es que el Rigidbody del Enemigo o del Player activan OnTriggerEnter varias veces. Pero esto solo ocurre cuando el Rigidbody del Player o el Enemigo se mueven. Es decir, si el Enemigo o el Player están quietos, no activaran OnTriggerEnter de los colliders tipo Trigger. Y cuando el Enemigo o el Player se mueven activaran OnTriggerEnter varias veces.

 

Es mejor realizar un Overlap (superposición) mediante alguna función de Physics2D: http://docs.unity3d.com/ScriptReference/Physics2D.html , OverlapCircle, OverlapPoint, etc... durante la animación de ataque, para saber si ha alcanzado al objetivo.

Si al finalizar el ataque, la variable bool en la que hemos guardado el Overlap es true, entonces produciremos daño(una sola vez).

Edited by kaito

Share this post


Link to post
Share on other sites
Sign in to follow this  

UnitySpain © Todos los derechos reservados 2020
×
×
  • Create New...