using System.Collections; using System.Collections.Generic; using UnityEngine; public class Movement : MonoBehaviour { public float movementSpeed; public Rigidbody2D Rigidbody; private Vector2 moveDirection; public Transform Player; void Start() { } void Update() { ProcessInputs(); } void FixedUpdate() { move(); } void ProcessInputs() { float moveX = Input.GetAxisRaw("Horizontal"); float moveY = Input.GetAxisRaw("Vertical"); moveDirection = new Vector2(moveX, moveY).normalized; } void move() { Rigidbody.velocity = new Vector2(moveDirection.x * movementSpeed, moveDirection.y * movementSpeed); } }
Así que necesitaba algunos consejos, así que pensé en preguntar aquí, quería implementar carreras en mi Top-Down-Shooter, pero no encontré ningún código en Youtube que funcionara correctamente con mi código. También intenté mover la posición de los jugadores +2 a la dirección deseada pero no pude resolverlo. Sería feliz si todos pudieran ayudarme.
Es bueno que estés usando FixedUpdate() para la física; muchos principiantes lo usan mal. Sin embargo, no ajuste la velocidad manualmente. Utilice AddForce. Establecerá efectivamente la velocidad, pero automáticamente toma en cuenta la masa de los objetos y permite acelerar en lugar de estar instantáneamente a la velocidad. Ese es el enfoque más lógico ya que te mueves en una dirección aplicando fuerzas a tu cuerpo.
Para Dashing, podría agregar una fuerza significativamente mayor para una pequeña cantidad de marcos de física (también conocida como una pequeña cantidad de llamadas FixedUpdate). Puede usar una cuenta regresiva que establece en un número cuando el personaje debe comenzar a correr. En FixedUpdate, disminuye el contador y, siempre que sea> 0, aplica la fuerza de aceleración.