Advertisement
gomuani

Movimiento Horizontal

Jun 11th, 2025
864
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.25 KB | Gaming | 0 0
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4.  
  5. public class Move2D: MonoBehaviour
  6. {
  7.     public float velocidad = 5f;          // Velocidad de movimiento horizontal
  8.     public float fuerzaSalto = 7f;        // Fuerza con la que el personaje salta
  9.     public Transform chequeoSuelo;        // Objeto que verifica si el personaje está en el suelo
  10.     public LayerMask capaSuelo;           // Define qué es considerado suelo
  11.  
  12.     private Rigidbody2D rb;
  13.     private Animator animator;
  14.     private bool enSuelo;
  15.     private float radioChequeo = 0.2f;    // Tamaño del área que detecta el suelo
  16.     private float movimiento;
  17.     private bool mirandoDerecha = true;
  18.  
  19.     void Start()
  20.     {
  21.         rb = GetComponent<Rigidbody2D>();         // Obtener el Rigidbody2D
  22.         animator = GetComponent<Animator>();      // Obtener el Animator si hay animaciones
  23.     }
  24.  
  25.     void Update()
  26.     {
  27.         // Obtener entrada del jugador en el eje horizontal
  28.         movimiento = Input.GetAxisRaw("Horizontal");
  29.  
  30.         // Verificar si el personaje está tocando el suelo
  31.         enSuelo = Physics2D.OverlapCircle(chequeoSuelo.position, radioChequeo, capaSuelo);
  32.  
  33.         // Saltar si el jugador presiona la tecla y está en el suelo
  34.         if (Input.GetButtonDown("Jump") && enSuelo)
  35.         {
  36.             rb.velocity = new Vector2(rb.velocity.x, fuerzaSalto);
  37.         }
  38.  
  39.         // Voltear el personaje según la dirección
  40.         if (movimiento > 0 && !mirandoDerecha)
  41.             Voltear();
  42.         else if (movimiento < 0 && mirandoDerecha)
  43.             Voltear();
  44.  
  45.         // Opcional: actualizar animaciones si usas Animator
  46.         if (animator != null)
  47.         {
  48.             animator.SetFloat("Velocidad", Mathf.Abs(movimiento));
  49.             animator.SetBool("enSuelo", enSuelo);
  50.         }
  51.     }
  52.  
  53.     void FixedUpdate()
  54.     {
  55.         // Aplicar movimiento horizontal
  56.         rb.velocity = new Vector2(movimiento * velocidad, rb.velocity.y);
  57.     }
  58.  
  59.     void Voltear()
  60.     {
  61.         // Cambia la dirección del personaje invirtiendo su escala en X
  62.         mirandoDerecha = !mirandoDerecha;
  63.         Vector3 escala = transform.localScale;
  64.         escala.x *= -1;
  65.         transform.localScale = escala;
  66.     }
  67. }
  68.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement