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:
(https://fotos.subefotos.com/a0a1c13457a24b3630bf869852a3ac74o.png)
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
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
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.
(https://fotos.subefotos.com/fb61420ffd5a2a8769281969b28e026co.png)
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");
}
Pero yo no es eso lo que necesito
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
(https://fotos.subefotos.com/fb61420ffd5a2a8769281969b28e026co.png) (https://fotos.subefotos.com/fb61420ffd5a2a8769281969b28e026co.png)
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...
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.
(https://fotos.subefotos.com/30e5048ef8508e89608d010d0f1c4f63o.png)
(https://fotos.subefotos.com/8bff7995500a557e17500e72a67dfffeo.png)
Y otra cosa, el guion estaría así correcto?
(https://fotos.subefotos.com/915a593e5616bdc777b93b8df89d4925o.png)
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.
(https://fotos.subefotos.com/8788ad00e7468bcb9a0fe96c5833ecf8o.png)
(https://fotos.subefotos.com/bb7382b6404b40abc026b2038c2cf5b1o.png)
Hecho! gracias tios!
Vale, ya he corregido el problema, y una pregunta, si quisiera que la animación fuera acompañada de un clip de audio como deberia introducirlo? a través de script?
Cita de: Alvaro95 date=1535379857Hecho! gracias tios!
Vale, ya he corregido el problema, y una pregunta, si quisiera que la animación fuera acompañada de un clip de audio como deberia introducirlo? a través de script?
Deberias hacer una referencia a un Audio Source y a un Audio Clip -
private AudioSource _source { get; set; }
[SerializeField]
private AudioClip _clip = null;
private void Awake()
{
_source = gameObject.AddComponent<AudioSource>();
}
private void Update()
{
if(Input.GetKeyDown(KeyCode.R)) _source.PlayOnShot(_clip);
}
Si quieres reproducir múltiples audios en una animación utiliza EventKey o si es algo mas complejo te invito a usar Director
Seria que solo sonara cuando la animación se reproduce, no cada vez que le doy a la R
Y en el caso que quisiera añadir otra animación y que mientras tanto se quedara en ese mismo estado como seria?
Cita de: Alvaro95 date=1535404748Y en el caso que quisiera añadir otra animación y que mientras tanto se quedara en ese mismo estado como seria?
Cita de: Alvaro95 date=1535385951Seria que solo sonara cuando la animación se reproduce, no cada vez que le doy a la R
Creo que ya llegaste a tu cuota diaria de ayuda en el foro, no digo que este mal preguntar pero te estás quedando en un mismo lugar por no buscar información, estas cosas son simples, solo basta con entender cómo funciona, no busques la solución a X problema sin hacer el intento de aprender la herramienta, Unity tiene muchisimas secciones para aprender dentro del ámbito de las animaciones.
Para aprender sobre esto te recomiendo la documentación oficial.
https://docs.unity3d.com/ScriptReference/UnityEngine.AnimationModule.html (https://docs.unity3d.com/ScriptReference/UnityEngine.AnimationModule.html)
Saludos
Cita de: Alvaro95 date=1535385951Seria que solo sonara cuando la animación se reproduce, no cada vez que le doy a la R
Mírate en el manual de Unity3D algo llamado Animation Event. Es un tipo de acción que puedes conectar a un fotograma de una animación. Puede ser cualquier cosa, así que también puede sonar un audio...
Cita de: Alvaro95 date=1535404748Y en el caso que quisiera añadir otra animación y que mientras tanto se quedara en ese mismo estado como seria?
Repasa la documentación básica de cómo funciona el Mecanim/Animator. Es el uso fundamental del módulo.
Gracias pioj y francoe
Ni caso, he contestado y no se borrarlo XD