Unity Spain

Post Antiguos => General (Antiguo) => Mensaje iniciado por: Ester_pixels en Marzo 17, 2016, 05:23:45 PM

Título: Trasladarse al caminar
Publicado por: Ester_pixels en Marzo 17, 2016, 05:23:45 PM
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!!! 
Título: Trasladarse al caminar
Publicado por: Ester_pixels en Marzo 18, 2016, 12:11:43 AM
a lo mejor ha sido demasiado extenso el post....alguien sabe como poner animation.IsPlaying en Animator? 
Título: Trasladarse al caminar
Publicado por: Sateyr en Marzo 18, 2016, 12:33:38 AM
Buenas,a través del animator puedes saber si una animación está activa.
if (animator.GetCurrentAnimatorStateInfo(0).IsName("nombreDeLaAnimacion"))
  
Título: Trasladarse al caminar
Publicado por: Ester_pixels en Marzo 18, 2016, 01:03:40 AM
He puesto eso pero no hace nada.el script no me da error pero no se....no hace nada 
Título: Trasladarse al caminar
Publicado por: ftejada en Marzo 18, 2016, 02:07:20 AM
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
Título: Trasladarse al caminar
Publicado por: Ester_pixels en Marzo 18, 2016, 09:50:34 AM
OK, pon fin ha funcionado!!! es lo que habéis dicho los dos  !!!Gracias flejada y Sateyr !! con mecanim todo parece mas complicado.. GRACIAS