Noticias

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

Problema con animación. He googleado 5 horas XP.

Iniciado por aronvirgo, Octubre 22, 2015, 08:08:04 PM

Tema anterior - Siguiente tema
Hola comunidad!. Resulta que tengo un gran problema que no puedo resolver. Tengo un personaje (nombe de GameObject Jugador y es de cuerpo completo) que cambia de dirección con la tecla A y la tecla D. Si el jugador preciona A, la variable orientacion queda  orientación = "oeste", si preciona D queda orientación = "este". Ahora, si el usuario preciona el botón derecho del ratón, se activa un GameObject diferente, el Sprite_apuntar_pistola1, que es básicamente un torso apuntando y sin piernas, y el GameObject Jugador queda con las puras piernas, esto lo hago porque quiero ser capaz de rotar el torso del personaje con el movimiento de la mira en pantalla, pero solamente cuando elusuario preciona el botón derecho del ratón. El Sprite_apuntar_pistola1 es el que me está dando el problema. Aquí les pongo la imagen si el personaje mira al este y preciona el btn derecho del ratón:Img 1Pareciera que en la Imagen 2 no me está tomando el Animator, eso que está bien importado. Al desactivarlo sigue teniendo el mismo comportamiento.  A_P_Oeste y A_P_Este tienen asignados un clip respectivamente pero Apuntar no.



Cita de: kaito date=1445544592" data-ipsquote="" data-cite="kaito" class="ipsQuoteUtiliza la function LateUpdate en lugar de Update para apuntar.
No hermano, gracias por la ayuda pero no he logrado solucionarlo con eso. No logro entender porqué razón no funciona :/.

No me había fijado, pero me sale una alerta en la linea 6 del script "Control_Apuntar_Pistola1.cs":Verifiqué que me tomará la orientación desde el script "Control_Básico.cs" con Debug.log(orientacion) y efectivamente lo hace bien. Creo que no está incorporando el Animator... por eso la alerta de la linea 6.

[quote author=aronvirgo" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="32628" data-ipsquote-contentcommentid="120874">No hermano, gracias por la ayuda pero no he logrado solucionarlo con eso. No logro entender porqué razón no funciona :/.[/quote]No sabía exactamente a que te referías con orientación, pero si quieres modificar la animación, por ejemplo la rotación del GameObject, eso se hace desde LateUpdate. 

[quote author=kaito" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="32628" data-ipsquote-contentcommentid="121071"> No sabía exactamente a que te referías con orientación, pero si quieres modificar la animación, por ejemplo la rotación del GameObject, eso se hace desde LateUpdate. . Gracias por la ayuda :D

Octubre 24, 2015, 05:35:42 AM #6 Ultima modificación: Octubre 24, 2015, 05:38:34 AM por Oaken3d
Para mi es un poco dificil de entenderlo, siempre con problemas de animacion es mejor tener el projecto enfrente para poder ver cómo es que está funcionando el Animator con respecto al script, lo único que veo y no entiendo bien es por que desactivar un objeto, lo que te puedo decir y es algo que me paso a mi hace poco y me tubo como loco varios días hasta el punto que tuve que reescribir un script muy importante de el juego, es que cuando tenía una animación de mi jugador, en el momento que lo desactivaba y lo activaba toda la animación se me volvia loca, por ejemplo que cuando tenía una animación de un ship que se movía y después de desactivar y activar me aparecian algunos sprites de las animaciones de explosion, y mirano el animador me mostraba que todo corria perfectamente,me mostraba la animación de Idle pero con sprites de explosión, en fin nunca supe si era algun error de unity o mio, pero con decirte que la única forma de que lo arregle es que en vez de hacer explotar el ship y desactivarlo y activarlo en  el spawn point, opte por solo moverlo a un punto fuera de pantalla sin desactivarlo, y con eso se me soluciono el problema, te dire que me tomo como una semana todo en haber encontrado ese detalle algo raro. Pero bueno no se si ese sea tuyo el caso pero lo que si veo es que de igual manera no veo caso de que tengas que desactivar ese objeto para hacer esa clase de animaciónuna cosa que puedo ver tambien es que no tienes una coneccion de A_P_oeste a A_P_este, creo que eso debería ir conectado, pero bueno eso ya es también dependiendo de el funcionamiento de el juego que tu necesites

[quote author=Oaken3d" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="32628" data-ipsquote-contentcommentid="121144">Para mi es un poco dificil de entenderlo, siempre con problemas de animacion es mejor tener el projecto enfrente para poder ver cómo es que está funcionando el Animator con respecto al script, lo único que veo y no entiendo bien es por que desactivar un objeto, lo que te puedo decir y es algo que me paso a mi hace poco y me tubo como loco varios días hasta el punto que tuve que reescribir un script muy importante de el juego, es que cuando tenía una animación de mi jugador, en el momento que lo desactivaba y lo activaba toda la animación se me volvia loca, por ejemplo que cuando tenía una animación de un ship que se movía y después de desactivar y activar me aparecian algunos sprites de las animaciones de explosion, y mirano el animador me mostraba que todo corria perfectamente,me mostraba la animación de Idle pero con sprites de explosión, en fin nunca supe si era algun error de unity o mio, pero con decirte que la única forma de que lo arregle es que en vez de hacer explotar el ship y desactivarlo y activarlo en  el spawn point, opte por solo moverlo a un punto fuera de pantalla sin desactivarlo, y con eso se me soluciono el problema, te dire que me tomo como una semana todo en haber encontrado ese detalle algo raro. Pero bueno no se si ese sea tuyo el caso pero lo que si veo es que de igual manera no veo caso de que tengas que desactivar ese objeto para hacer esa clase de animaciónuna cosa que puedo ver tambien es que no tienes una coneccion de A_P_oeste a A_P_este, creo que eso debería ir conectado, pero bueno eso ya es también dependiendo de el funcionamiento de el juego que tu necesites[/quote]Gracias por la info :). Al final, como puse más arriba ya arreglé el animador, y justamente lo dejé con A_P_peste y A_P_este unidas. Respecto a como funcionan los objetos, lo que pasa es que no usé esqueletos ni piezas independientes para los sprites. Me gusta hacerlo a la vieja escuela, con un sprite completo. Desafortunadamente, y solo una acción en la que tengo que hacer algo diferente y hacer un "sprite mixto". Cuando presiono el btn secundario el gameobject Jugador se vuelve así: true/false

claro entiendo, pero igual pienso que no habria por que desactivar y activar gameobjects, bueno almenos esa seria mi forma,yo lo haría haciendo un gameobject padre con el script, y dos childrens, uno con las piernas y otro con el cuerpo superior, cada uno con sus animaciones de ilde o animación. 

[quote author=Oaken3d" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="32628" data-ipsquote-contentcommentid="121780">claro entiendo, pero igual pienso que no habria por que desactivar y activar gameobjects, bueno almenos esa seria mi forma,yo lo haría haciendo un gameobject padre con el script, y dos childrens, uno con las piernas y otro con el cuerpo superior, cada uno con sus animaciones de ilde o animación. [/quote]Había pensado en eso también. Pero no pude hacerlo :(. Se me presentaron problemas en la animación de correr, no era la gran cosa, pero si incomodo. Lo que pasa es que mi personaje cambia de alturas según su posición al correr, y había tenido que sincronizar las animaciones de ambos gameobject para que se lograra el efecto. Me dio flojera XD. Respecto al problema en cuestión, logré solucionarlo, era algo bien tonto: if(!Input.GetMouseButton (1))
        {
            t_espera_apuntado = 0.2f;
            Sprite_apuntar_pistola1.gameObject.SetActive (false);
        }

[quote author=aronvirgo" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="32628" data-ipsquote-contentcommentid="121866">Había pensado en eso también. Pero no pude hacerlo :(. Se me presentaron problemas en la animación de correr, no era la gran cosa, pero si incomodo. Lo que pasa es que mi personaje cambia de alturas según su posición al correr, y había tenido que sincronizar las animaciones de ambos gameobject para que se lograra el efecto. Me dio flojera XD. Respecto al problema en cuestión, logré solucionarlo, era algo bien tonto: if(!Input.GetMouseButton (1))
        {
            t_espera_apuntado = 0.2f;
            Sprite_apuntar_pistola1.gameObject.SetActive (false);
        }

yo lo que ago es poner un sprite trasparente en la animacion asi es como lo puedes esconder tambien

Etiquetas: