Buenas gente ya que este hilo está parado vengo a poner unas cuantas dudas porque he llegado a un punto donde estoy atascado y no se por donde tirar.
Estoy programando un controlador para un sidescroller, este es el código para controlar al personaje:
var speed : float = 6.0;
var jumpSpeed : float = 8.0;
var gravity : float = 20.0;
private var moveDirection : Vector3 = Vector3.zero;
function FixedUpdate() {
var controller : CharacterController = GetComponent(CharacterController);
if (controller.isGrounded) {
moveDirection = Vector3(0, 0, Input.GetAxis("Horizontal"));
moveDirection = transform.TransformDirection(moveDirection);
moveDirection *= speed;
if (Input.GetKey("up")) {
moveDirection.y = jumpSpeed;
}
}
moveDirection.y -= gravity * Time.deltaTime;
controller.Move(moveDirection * Time.deltaTime);
}
El problema que tengo es a la hora de aplicar las animaciones, ahora mismo el personaje lo que hace es moverse en el eje Z (Izda y Dcha) y saltar, pero cuando se mueve hacia la derecha (El PJ está por defecto mirando a la izquierda) no se rota.
He probado a hacer algo así como:
if(moveDirection.z < 0){
transform.Rotate(0,180,0);
}
Pero lo que pasa es que me gira todo el eje por lo que se invierten los controles.
Las dudas son, ¿Como se suele rotar el personaje independientemente de los controles? y ¿Como se suelen aplicar las animaciones? He visto que hay funciones específicas para hacerlo pero no me aclaro, así que si alguien tuviese una guía sería de ayuda.