Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: iemaru en Abril 28, 2017, 05:05:53 AM

Título: Ayuda con este script de anim
Publicado por: iemaru en Abril 28, 2017, 05:05:53 AM
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);
        
    }
}

 

 
Título: Ayuda con este script de anim
Publicado por: Null en Mayo 08, 2017, 11:26:40 PM
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.
Título: Ayuda con este script de anim
Publicado por: TheBullet en Mayo 09, 2017, 09:22:23 AM
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.
Título: Ayuda con este script de anim
Publicado por: AntonioV360 en Mayo 09, 2017, 10:06:37 AM
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.