public class PlayerController : MonoBehaviour { public float dashSpeed = 10f; // the speed at which the player will dash public float dashDuration = 0.5f; // the duration of the dash in seconds public float dashCooldown = 1f; // the cooldown period between dashes in seconds private Rigidbody2D rb; private bool isDashing = false; // flag to indicate if the player is currently dashing private float dashTimeLeft = 0f; // the remaining duration of the dash private float dashCooldownTimeLeft = 0f; // the remaining time until the player can dash again void Start() { rb = GetComponent(); } void Update() { // check if the player can dash if (Input.GetKeyDown(KeyCode.Space) && !isDashing && dashCooldownTimeLeft <= 0f) { isDashing = true; dashTimeLeft = dashDuration; rb.velocity = transform.right * dashSpeed; } // update the dash time and cooldown time if (isDashing) { dashTimeLeft -= Time.deltaTime; if (dashTimeLeft <= 0f) { isDashing = false; dashCooldownTimeLeft = dashCooldown; rb.velocity = Vector2.zero; } } else if (dashCooldownTimeLeft > 0f) { dashCooldownTimeLeft -= Time.deltaTime; } } }