Noticias

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

Animación al pulsar una tecla [AYUDA]

Iniciado por Alvaro95, Agosto 25, 2018, 10:26:40 PM

Tema anterior - Siguiente tema
Agosto 25, 2018, 10:26:40 PM Ultima modificación: Agosto 25, 2018, 10:29:33 PM por Alvaro95
Buenas a todos
 
 
 
Explico el caso un poco.
 
Resulta que he exportado un modelo animado desde 3DSmax a Unity 2018, y con ello tambien su correspondiente animacion, hasta aqui todo bien...
 
El modelo se ha exportado perfectamente y la animacion igual, ahora viene mi calvario, necesito algun metodo (Supongo que sera script) para que la animacion se reproduzca al pulsar una tecla en especifico.
 
Es decir, quiero que la animación se ponga en marcha cuando yo pulse una tecla, como B o G, cualquiera.
 
 
 
Espero vuestras respuestas comunidad.
 
Screen:
 

 
 
 
 

Bueno eso tienes que crear un AnimatorController, creas el árbol de animaciones, ide por defecto y luego las demás y configuras con una variable bool por ejemplo y al programar llamas al animator de tu personaje, programas las teclas con un if y luego dentro del if pones la variable de tu animator y creo que luego un punto y setbool o getbool no me acuerdo ahora mismo y lo pones en true o false si has puesto una variable bool en el mecanim.

Eh, un poco mas especifico por favor, soy principiante 

Cita de: Alvaro95 date=1535235946Eh, un poco mas especifico por favor, soy principiante 


Para qué lo reportas? Basta con responder.. 

NOO, le he dado sin querer pensando que era una reply, sorry

Agosto 26, 2018, 05:01:33 PM #5 Ultima modificación: Agosto 26, 2018, 05:05:44 PM por Igor
hola,
 
no entiendo muy bien, quieres que la animacion se reproduzca mientras pulsas una tecla? y que cuando la sueltes se pare? 
 
primero en la pestaña del animator tienes que crea dos "triggers" con el nombre que quieras porejemplo "parado" y "andando"
 
creo que sale un estado inicial... a ese le asignas una animacion de "parado"
 
creas otro estado y lo llamas "andando" o como quieras, y le asignas la animacion de "andando"
 
el cada uno de los estados, en el inspector, le pones como condicion para activarlo a cada uno su trigger (al estado parado el trigger parado y al estado andando el trigger andando)
 
ahora viene el script. lo añades a tu objeto con animator
 

private Animator anim;
void Start(){
anim = GetComponent<Animator>();
}
 
void Update(){
  if (Input.GetKey(keyCode.R)){
     anim.SetTrigger("andando");
  }else{
     anim.SetTrigger("parado");
  }
}
  
//mientras pulses "R" se reproducira la animacion

 
 

Agosto 26, 2018, 06:53:33 PM #6 Ultima modificación: Agosto 27, 2018, 06:06:13 PM por Alvaro95
Hola Igor muchas gracias por tu respuesta.
 
 
 
Te explico un poco.
 
La escena en concreto es una especie de carrusel de feria y lo que deseo es que cuando pulse una tecla se cierren los arneses de seguridad 
 
 
 
Como ves, los arneses tiene una animación importada desde 3DsMax, por lo tanto lo único que necesito es que cuando pulse una tecla la animación se reproduzca totalmente.
 
 
 
Es un take importado no le he renombrado ni nada.
 

 
 

Cita de: Igor date=1535295693//mientras pulses "R" se reproducira la animacion
   


a mi me pasó algo feo con un caso similar, mientres este la R presionada se triggeará una y otra vez, quedará en cuadro 1 de la animación. Lo resolví con algo así:
 

if (Input.GetKeyDown(KeyCode.R)){
     anim.SetTrigger("andando");
  }else if(Input.GetKeyUp(KeyCode.R)){
     anim.SetTrigger("parado");
  }

 
 


pues deja solo la primera parte del "if"
 

if (Input.GetKeyDown(KeyCode.R)) {
anim.SetTrigger("andando");
}

 
 
 
pero primero fijate en:
 
Cita de: Alvaro95 date=1535302413 
   
   
      
   
   
       
   


 
 
 
 
 
 
a la izquierda de la imagen, arriba, tienes "layers" y "parameters"...  pues en parameters es donde tienes que crear el "trigger" "andando"...
 
luego, al pinchar en "Take 001" te saldran otras opciones a la izquierda... en ina de ellas, abajo, pone para añadir una condicion a esa animacion... ponle el trigger que has creado...

Agosto 27, 2018, 02:58:24 PM #10 Ultima modificación: Agosto 27, 2018, 03:11:42 PM por Alvaro95
Si, el parámetro andando ya lo tenia creado, el problema es que no tengo opciones para añadirlo
 
 
 
La única opción ha sido crear una nueva transición desde Emptry hasta Take 001, no se si sera lo mas correcto.
 
 
 

 
 
 

 
 
 
Y otra cosa, el guion estaría así correcto?
 
 
 

 
 
 
Por que me reporta un error al final.

El error es tan simple como una falta de llave al final del IF del input.
 
Por otro lado en la línea de transición entre EMPTY state y La animación debe contener la referencia al trigger. 

creo que es donde "transition", nose, no tengo el PC delante... suelo mirar esta pagina desde el movil...
 
luego te confirmo bien...
 
espera! creo que ya se... te lo estaba diciendo mal... (por no hacerlo con el PC delante... jeje, sorry) 
 
tendrias que crear un estado mas, ya que de "entry" pasa directamente a "Take 001" (ese seria tu estado de reposo (parado)) ...y de ese pasaria al "andando" 
 
1° tendrias que crear el estado "andando",  
 
...luego, desde el estado "Take 001" creas una transicion que vaya a "andando" (una flechita que los une, que va de "Take 001" a "andando"
 
pinchas esa flechita, y es ahi donde sale para poner un parametro como condicion para pasar a ese estado, osea, esa flechita de "take001" a "andando" dice que la animaciin pase de "take001" a andando.... pero poniendole ese parametro solo pasara a "andando" cuando se cumpla la condicion...
 
si quisieras que volviese al estado "parado" (take001) tendrias que poner otra flecha (transicion) en sentido contrario... con otra condicion...

Los trigger siempre es mejor llamarlos desde Any State, salvo que la animación tenga una salida por EXIT-STATE

Ya lo he hecho pero la animación no parece reproducirse al pulsar R, creo que esta todo bien.
 
 
 

 
 
 

Etiquetas: