Hola a todos/as de nuevoif (botonH){
transform.Translate(Vector2.right*VelocidadHorizontal*Time.deltaTime);
anim.SetTrigger("rotar"");
anim.SetBool("caminar",true);
}
else if (!botonH){
anim.SetBool("caminar",false);
}- botonH es una variable de ejemplo que es como si fuera Input.GetKey (right) o (left) como muestro en el código de ejemplo...El problema es que cuando reproduce la animación de rotación el player se traslada y eso es un error, por que lo normal es que cuando rote esté inmóvil y empiece a trasladarse cuando camine..Mi idea es bloquear los botones right y left cuando reproduzca la animación de rotar, es decir , tener esos botones como variable boolenas y cuando reproduzca la animación de rotar pongo en false esa variable y cuando termine la animación rotar la variable pasaría a true¿cómo podría poner una variable en true / false mientras se reproduce una animación en mecanim que en este caso sería con la animación de rotar?me explico:Con la programación antigua en 3d aprendí muchísimo en programación de unity, pero en mecanim cambian muchas cosas y ahora ando perdida con casi todo y me cuesta bastante entenderlo...Antes utilizaba este método con animation para bloquear botones con animaciones :
// para poner una variable en falso cuando reproduzca animación
if (animation.IsPlaying("rotar"")){
botonH = false;
}
// poner una variable en true cuando NO reproduzca animación
if( ! animation.IsPlaying("rotar"")){
botonH = true;
}
pero con animator es distinto y como siempre mecanim me vuelve loca con sus flechas y movidas, y ahora esto es como un laberinto para mi ...jajajajLo único que se me ocurre seria ponerle el movimiento de traslado del character a la animación de caminar, para que al rotar se quede inmóvil y seguidamente camine y se desplace...Un ejemplo chapucero sería algo así...
var VelocidadHorizontal : float = 6.0;
var moveIz : float;
var moveIz = transform.Translate(Vector2.right*VelocidadHorizontal*Time.deltaTime);
animacion.SetFloat("caminar", moveIz);
Ya se que esto es muy pero que muy chapucero, pero espero que me entendáis cual es mi duda...Después de todo este peeeeeedaso se post, mi única duda es como ponerle move traslate solamente cuando reproduzca la animación de caminar¿sabríais alguna solución para este problema? GRACIAS!!!
a lo mejor ha sido demasiado extenso el post....alguien sabe como poner animation.IsPlaying en Animator?
Buenas,a través del animator puedes saber si una animación está activa.
if (animator.GetCurrentAnimatorStateInfo(0).IsName("nombreDeLaAnimacion"))
He puesto eso pero no hace nada.el script no me da error pero no se....no hace nada
Cita de: Ester_pixels date=1458231825" data-ipsquote="" data-cite="Ester_pixels" class="ipsQuote">/quote] Comprueba que la animacion de rotar no este en loop y prueba esto a ver si funciona...{
anim.SetBool("caminar",true);
transform.Translate(Vector2.right*VelocidadHorizontal*Time.deltaTime);
}
saludos
OK, pon fin ha funcionado!!! es lo que habéis dicho los dos !!!Gracias flejada y Sateyr !! con mecanim todo parece mas complicado.. GRACIAS