Noticias

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

Ayuda con este script de anim

Iniciado por iemaru, Abril 28, 2017, 05:05:53 AM

Tema anterior - Siguiente tema
Abril 28, 2017, 05:05:53 AM Ultima modificación: Abril 28, 2017, 01:05:33 PM por pioj
Saludos Compañeros, Tengo una duda con este script de anim en legacy y es q tuve problemas con el mecanim y
 
 los huesos de mi personaje pero no con legacy...y decidi hacerlo a la antigua. Me gustaria saber pq al precionar space no se reproduce 
 
la anim solo lo hace si sigo precionando varias veces la anim comienza a reproducirse a medida q sigo presionando el space y lo q deseo q se
 
vea la anim de una sola vez...  aqui mi script:  gracias por la ayuda!!!
 
 
 

// Boleanos
    private bool isGrounded = true;
 
    // var animacion 
    private Animation anim; // esta es la unica forma q se reproduce la anim
    void Start (){
        anim = GetComponent<Animation>();
    }
 
    void Update (){
        if (isGrounded == true) {
            if (Input.GetKey ("w") || Input.GetKey ("s")) {
                
                StopAllCoroutines ();
                GetComponent<Animation> ().CrossFade ("Teo_Walk_V3", 1.00f);
            }
                
     
            else if (Input.GetKey ("a") || Input.GetKey ("d")) {
                
                StopAllCoroutines ();
                GetComponent<Animation> ().CrossFade ("Teo_Walk_V3", 1.00f);
            }
            
            else if (Input.GetKeyDown ("space")){    // esta es la unica animacion q no se reproduce a menos q siga pulsando el space button...
                
                StopAllCoroutines ();
                anim.Play ("Teo_jump_V3");
            }
          
            else {
                GetComponent<Animation> ().CrossFade ("Teo_IdelStatico_V3", 1.00f);
                //anim.play ("Teo_IdelStatico_V3");
                
                StartCoroutine (IdelWait ());
            }
        }
    }
    IEnumerator IdelWait () {
            yield return new WaitForSeconds (5);
            GetComponent<Animation> ().CrossFade ("Teo_Idel_Panza_V3", 0.30f);
    
            yield return new WaitForSeconds (5);
            GetComponent<Animation> ().CrossFade ("Teo_IdelStatico_V3", 1.00f);
        
    }
}

 

 

Mayo 08, 2017, 11:26:40 PM #1 Ultima modificación: Mayo 08, 2017, 11:28:51 PM por Null
Hola!

Tu problema es que estás usando GetKeyDown aquí:
 

else if (Input.GetKeyDown ("space")) {    // esta es la unica animacion q no se reproduce a menos q siga pulsando el space button...
StopAllCoroutines ();
anim.Play ("Teo_jump_V3");
}

 
Prueba a usar GetKey nada más.

Cita de: Null date=1494278800Hola!

      Tu problema es que estás usando GetKeyDown aquí:
   
   

else if (Input.GetKeyDown ("space")) {    // esta es la unica animacion q no se reproduce a menos q siga pulsando el space button...
StopAllCoroutines ();
anim.Play ("Teo_jump_V3");
}

   
      Prueba a usar GetKey nada más.
   


En parte si, pero tal y como tiene el código si solo pulsa rápidamente el espacio el personaje estará en el aire y cambiara de animación automáticamente, ya sea la idle o la de andar si tiene un botón de correr pulsado.
 
 
 
@iemaru lo que tienes que hacer es controlar cuando el personaje está en el aire saltando (o cuando acaba la animación). Mientras esté en el aire las otras animaciones no se tienen que ejecutar, podrías hacer un bool llamado enElAire por ejemplo, y mientras este sea verdadero las otras animaciones no se ejecutan.

Una solucion simple es tener un trigger en los pies del personaje que cuando no este en colision con el suelo(ponle al suelo un tag para identificarlo) de true a la boleada X ("enELaire" como indica el compañero). Luego simplemente lo implementas bien en el animator y pones la bool false por defecto. 

Etiquetas: