Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections;
- using System.Collections.Generic;
- using UnityEngine;
- public class Move2D : MonoBehaviour
- {
- public float velocidad = 5f; // Velocidad de movimiento horizontal
- public float fuerzaSalto = 10f; // Fuerza del salto
- public Transform chequeoSuelo; // Objeto para verificar si está en el suelo
- public LayerMask capaSuelo; // Define qué se considera como suelo
- private Rigidbody2D rb;
- private bool enSuelo;
- private float movimiento;
- private bool mirandoDerecha = true;
- void Start()
- {
- // Obtener el componente Rigidbody2D al iniciar
- rb = GetComponent<Rigidbody2D>();
- }
- void Update()
- {
- // Capturar la entrada horizontal (A/D o Flechas izquierda/derecha)
- movimiento = Input.GetAxisRaw("Horizontal");
- // Comprobar si el personaje está tocando el suelo (círculo pequeño en los pies)
- enSuelo = Physics2D.OverlapPoint(chequeoSuelo.position, capaSuelo);
- // Si está en el suelo y se presiona la tecla de salto
- if (Input.GetButtonDown("Jump") && enSuelo)
- {
- rb.velocity = new Vector2(rb.velocity.x, fuerzaSalto);
- }
- // Voltear el personaje si cambia de dirección
- if (movimiento > 0 && !mirandoDerecha)
- Voltear();
- else if (movimiento < 0 && mirandoDerecha)
- Voltear();
- }
- void FixedUpdate()
- {
- // Aplicar movimiento horizontal manteniendo la velocidad vertical actual
- rb.velocity = new Vector2(movimiento * velocidad, rb.velocity.y);
- }
- void Voltear()
- {
- // Invertir la escala en X para voltear el sprite
- mirandoDerecha = !mirandoDerecha;
- Vector3 escala = transform.localScale;
- escala.x *= -1;
- transform.localScale = escala;
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement