AI Truy đuổi Người chơi (Chase)

Tags:
AI
Movement
Gameplay
Player

C# Code

using UnityEngine;

public class AIChase : MonoBehaviour
{
    public Transform playerTransform;
    public float moveSpeed = 4f;
    public float detectionRange = 10f;
    public float stopChasingRange = 15f;

    private bool isChasing = false;

    void Update()
    {
        if (playerTransform == null)
        {
            // Cố gắng tìm người chơi nếu chưa có tham chiếu
            GameObject player = GameObject.FindGameObjectWithTag("Player");
            if (player != null) playerTransform = player.transform;
            else return; // Không tìm thấy người chơi
        }

        float distanceToPlayer = Vector3.Distance(transform.position, playerTransform.position);

        if (isChasing)
        {
            // Nếu đang đuổi, tiếp tục di chuyển tới người chơi
            transform.position = Vector3.MoveTowards(transform.position, playerTransform.position, moveSpeed * Time.deltaTime);
            // Nhìn về phía người chơi
            transform.LookAt(playerTransform);

            // Nếu người chơi ra khỏi phạm vi dừng, ngừng đuổi
            if (distanceToPlayer > stopChasingRange)
            {
                isChasing = false;
            }
        }
        else
        {
            // Nếu người chơi vào trong phạm vi phát hiện, bắt đầu đuổi
            if (distanceToPlayer < detectionRange)
            {
                isChasing = true;
            }
        }
    }

    // Vẽ phạm vi trong Editor
    void OnDrawGizmosSelected()
    {
        Gizmos.color = Color.yellow;
        Gizmos.DrawWireSphere(transform.position, detectionRange);
        Gizmos.color = Color.red;
        Gizmos.DrawWireSphere(transform.position, stopChasingRange);
    }
}

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.

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

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

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.

Player
Movement
Gameplay
Coroutine

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

AI chỉ có thể 'nhìn thấy' và phát hiện người chơi nếu họ nằm trong một hình nón phía trước mặt nó. Hữu ích cho các game stealth.

AI
Gameplay
Stealth

AI sẽ bắn đạn về phía người chơi khi họ ở trong tầm tấn công và có một khoảng thời gian chờ (cooldown) giữa mỗi lần bắn.

AI
Gameplay
Spawning
Physics

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

Một cấu trúc để một con boss thay đổi hành vi và bộ kỹ năng khi máu của nó xuống dưới các ngưỡng nhất định.

AI
Gameplay
Combat

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