Dash/Dodge Roll: Thực hiện một cú lướt tới hoặc lăn né nhanh

Tags:
Player
Movement
Gameplay
Coroutine

C# Code

using UnityEngine;
using System.Collections;

public class PlayerDash : MonoBehaviour
{
    public float dashSpeed = 20f;
    public float dashDuration = 0.2f;
    public float dashCooldown = 1f;

    private Rigidbody rb;
    private Vector3 moveDirection;
    private bool canDash = true;
    private bool isDashing = false;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void Update()
    {
        // Lấy hướng di chuyển từ input
        float horizontal = Input.GetAxisRaw("Horizontal");
        float vertical = Input.GetAxisRaw("Vertical");
        moveDirection = new Vector3(horizontal, 0f, vertical).normalized;

        if (Input.GetKeyDown(KeyCode.LeftShift) && canDash)
        {
            StartCoroutine(Dash());
        }
    }

    private IEnumerator Dash()
    {
        canDash = false;
        isDashing = true;

        // Lưu vận tốc hiện tại để có thể phục hồi sau khi dash
        Vector3 originalVelocity = rb.velocity;

        // Áp dụng lực dash
        rb.velocity = moveDirection * dashSpeed;

        // Chờ hết thời gian dash
        yield return new WaitForSeconds(dashDuration);

        isDashing = false;
        rb.velocity = originalVelocity; // Tùy chọn: có thể set rb.velocity = Vector3.zero;

        // Bắt đầu cooldown
        yield return new WaitForSeconds(dashCooldown);
        canDash = true;
    }
}

Cho phép nhân vật thực hiện một cú lướt nhanh theo hướng di chuyển hiện tại. Có cooldown để tránh lạm dụng.

Bình luận (0)

Bạn cần đăng nhập để có thể bình luận.

Chưa có bình luận nào. Hãy là người đầu tiên!

Bài viết liên quan

AI sẽ phát hiện người chơi trong một phạm vi nhất định và bắt đầu di chuyển về phía họ. Khi người chơi ra khỏi phạm vi, AI sẽ dừng lại.

AI
Movement
Gameplay
Player

Cho phép nhân vật 2D di chuyển lên và xuống khi tiếp xúc với một đối tượng được đánh dấu là 'Ladder'.

2D
Movement
Player
Gameplay
Platformer

Một script đơn giản cho AI để di chuyển tuần tự qua một danh sách các điểm (waypoints). Khi đến điểm cuối cùng, nó sẽ quay trở lại điểm đầu tiên.

AI
Movement
Gameplay

Tạo một viên đạn (projectile) tại một điểm và bắn nó đi theo một hướng xác định. Thường dùng cho nhân vật hoặc kẻ địch.

Gameplay
Player
Spawning
Physics

Cho phép người chơi di chuyển nhân vật đến một vị trí trên mặt đất bằng cách chạm vào điểm đó trên màn hình. Sử dụng Raycast để xác định vị trí trong không gian 3D.

Mobile
3D
Movement
Player
Input

Sử dụng Input System mới của Unity để di chuyển nhân vật 2D hoặc 3D một cách hiệu quả và linh hoạt.

2D
3D
Input
Gameplay
Player

Giúp nhân vật đứng vững trên các nền tảng di chuyển (moving platforms) bằng cách tạm thời đặt nhân vật làm con của nền tảng đó.

Movement
Player
Physics
Platformer

Ví dụ cách sử dụng các tham số Trigger, Bool và Float (cho Blend Tree) để điều khiển các trạng thái animation của nhân vật.

Animation
Animator
Player
Gameplay

Giữ một đối tượng trong một vùng hình chữ nhật xác định bằng cách sử dụng hàm Mathf.Clamp() để giới hạn giá trị tọa độ x và y.

Movement
Physics
Player
Boundaries

Sử dụng Tilemap Collider 2D và Composite Collider 2D để tạo ra một vùng đi lại duy nhất cho nhân vật, ngăn họ đi xuyên tường hoặc ra khỏi bản đồ.

2D
Movement
Player
Physics
Tilemap