Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Problema con la animacion de disparo

Iniciado por S0LXZ, Abril 20, 2018, 12:39:43 PM

Tema anterior - Siguiente tema
Hola buenas, tengo un problemilla ya que estoy programando un disparo y quiero que realice la animación.
 
El caso es que al disparar, no realiza la animación a tiempo, es decir, que espera a que acabe la animación de reposo para poder desencadenar la animación de disparo.  ¿Cómo puedo hacer que la animación se realice directamente cada vez que pulso el botón?
 
Gracias y os doy el código por si acaso 
 

public void Disparar () {
   if (Input.GetButtonDown("Fire1")) {
      Instantiate (this.Bala, this.Instanciador.transform.position, this.Instanciador.transform.rotation);
      this.transform.GetComponent<Animator>().SetTrigger ("Disparo");
      }
}

 
 

en la pestaña "animator" tienes que "pinchar" en las transiciones deseadas y des_marcar la opcion "has exit time" (tiene tiempo de salida).... si lo "quitas", "saltara" de una animacion a la otra sin hacer transicion... creo...

Gracias pero sigue habiendo un problema, es que si disparo dos veces, hace solo 1 animacion de disparo, y la otra la hace despues de  que acabe la primera. Como lo solucciono??
 
 

Abril 20, 2018, 10:35:06 PM #3 Ultima modificación: Abril 20, 2018, 10:36:19 PM por lightbug
Cita de: S0LXZ date=1524250980Gracias pero sigue habiendo un problema, es que si disparo dos veces, hace solo 1 animacion de disparo, y la otra la hace despues de  que acabe la primera. Como lo solucciono??
   
   
       
   


el disparo de donde viene ? fijate que si ponés el flujo de una manera la animación recorrerá un camino, una solución a esto es que los estados que sabés que llamandolos deben aparecer, (ej disparar teniendo balas) podés dispararlos desde "Any", si querés ver un ej el animator de un botón UI (te vas al botón animás por animator y le das crear) tiene esto mismo. No digo que sea la solución a tu problema, podría deberse a un mal diagrama de flujo, pero bueno probá a ver que pasa.

Abril 21, 2018, 12:53:51 PM #4 Ultima modificación: Abril 21, 2018, 12:55:52 PM por S0LXZ
Mi diagrama es el siguiente : 
 
Entry -> reposo
 
reposo -> Disparo
 
Disparo -> reposo 

hola,
 
creo que igual que usas
 

GetComponent<Animator>().SetTrigger ("Disparo")

 
deverias "llamar" tambien al estado "reposo"...
 
quizas añadir un temporizador, un tiempo de duracion del disparo, durante el cual no puedes volver a disparar, y al finalizar dicho tiempo se volveria al estado "reposo"
 
algo asi:
 

private float fireTimer = 0f;
 
void Update() {
if (fireTimer >= 0) {
   fireTimer -= Time.deltaTime;
} else {
   this.transform.GetComponent<Animator>().SetTrigger ("reposo");
}
}
 
public void Disparar () {
   if (fireTimer < 0 && Input.GetButtonDown("Fire1")) {
      Instantiate (this.Bala, this.Instanciador.transform.position, this.Instanciador.transform.rotation);
      this.transform.GetComponent<Animator>().SetTrigger ("Disparo");
             
            fireTimer = 0.5f;//medio segundo
   }
}

 
 

Perfecto!! Muchas Gracias me habeis ayudado un montón!!! Aprenderé de todo esto.
 
Gracias de nuevo

Etiquetas: