A ver si alguien me puede ayudar , estoy aprendiendo ahora mismo a manejar unity y estoy empezando a programar un juego de plataformas chustero, el tema es que quiero saber cómo hacer que al cambiar el sentido del movimiento , rote el personaje mirando hacia donde está andando , es decir que si voy a la derecha y pulso la tecla "A" para ir a la izquierda , el personaje rote mirando hacia la izquierda también.
Actualmente mi código es este , hice el método GirarPersonaje para hacer dicha rotación pero la hace bastante mal puesto que cambia un poco la posición y no rota sobre su mismo eje.
Código
Codigo public class MovimientoControl : MonoBehaviour {
//Variable Salto
public float fuerzaSalto = 11f;
public bool enSuelo = true;
private bool dobleSalto = false;
//Comprueba si el objeto comprobadorSuelo esta a x radio del suelo
public Transform comprobadorSuelo;
private float comprobadorRadio = 0.07f;
public LayerMask mascaraSuelo;
public float posicion = 0.0f;
//Velocidad de movimiento del personaje
public float velocidadMax = 5.0f;
//Variable para determinar hacia donde esta mirando el personaje
bool mirarDer = true;
//Animacion del personaje
Animator anim;
// Use this for initialization
void Start () {
//Inicializar anim en la funcion start
anim = GetComponent<Animator>();
}
// Update is called once per frame
void FixedUpdate() {
//Variable que determina si el personaje se ha movido a un lado o a otro
float movimiento = Input.GetAxis ("Horizontal");
anim.SetFloat ("speed", Mathf.Abs (movimiento));
//Decimos al personaje que se desplace
rigidbody2D.velocity = new Vector2(movimiento * velocidadMax, rigidbody2D.velocity.y);
//Condicion de mirar izquierda o derecha
if(movimiento > 0 && !mirarDer){
GirarPersonaje();
}
else if (movimiento < 0 && mirarDer){
GirarPersonaje();
}
//enSuelo = true si el objeto con el radio n esta tocando la mascara x
enSuelo = Physics2D.OverlapCircle (comprobadorSuelo.position, comprobadorRadio, mascaraSuelo);
if (enSuelo) {
dobleSalto = false;
}
anim.SetBool ("isGrounded", enSuelo);
}
void Update(){
if (Input.GetButtonDown ("Jump")) {
if (enSuelo || !dobleSalto) {
rigidbody2D.velocity = new Vector2 (rigidbody2D.velocity.x, fuerzaSalto);
rigidbody2D.AddForce (new Vector2 (0, fuerzaSalto));
}
if (!dobleSalto && !enSuelo) {
dobleSalto = true;
}
}
}
void GirarPersonaje(){
mirarDer = !mirarDer;
Vector3 escalada = transform.localScale;
escalada.x *= -1;
if (escalada.x == 1) {
posicion = transform.position.x;
transform.Translate (posicion * -10 * Time.deltaTime, 0, 0);
} else {
posicion = transform.position.x;
transform.Translate (posicion * 13 * Time.deltaTime, 0, 0);
}
transform.localScale = escalada;
}
}
Muchas gracias de antemano ^^