Hệ thống La bàn (Compass)

Tags:
UI
Gameplay
Navigation

C# Code

using UnityEngine;
using UnityEngine.UI;

public class Compass : MonoBehaviour
{
    public Transform playerTransform;
    public RectTransform compassBar;
    public GameObject markerPrefab;
    public Transform target;

    private Image markerImage;

    void Start()
    {
        GameObject newMarker = Instantiate(markerPrefab, compassBar);
        markerImage = newMarker.GetComponent<Image>();
    }

    void Update()
    {
        if (playerTransform == null || target == null || markerImage == null) return;

        // Tính toán hướng tới mục tiêu
        Vector3 directionToTarget = (target.position - playerTransform.position).normalized;

        // Chuyển hướng 3D thành góc 2D trên mặt phẳng XZ
        float angle = Vector2.SignedAngle(new Vector2(playerTransform.forward.x, playerTransform.forward.z), 
                                            new Vector2(directionToTarget.x, directionToTarget.z));

        // Chuyển góc thành vị trí trên thanh la bàn
        float compassWidth = compassBar.rect.width;
        float markerPositionX = Mathf.Clamp(angle / 180f * compassWidth, -compassWidth / 2f, compassWidth / 2f);

        markerImage.rectTransform.anchoredPosition = new Vector2(markerPositionX, 0);
    }
}

Hiển thị các điểm đánh dấu (marker) cho các mục tiêu trên một thanh la bàn UI, giúp người chơi định hướ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

Một script để quản lý một điểm đánh dấu trên UI (ví dụ: icon nhiệm vụ), đảm bảo nó luôn chỉ đúng hướng tới mục tiêu trong không gian 3D và ghim vào cạnh màn hình khi mục tiêu ở ngoài tầm nhìn.

UI
Navigation
Quest
Camera

Một hệ thống đơn giản để hiển thị các đoạn hội thoại có nhiều câu và lựa chọn cho người chơi, sử dụng ScriptableObject.

UI
Gameplay
Interaction
ScriptableObject

Một hệ thống kho đồ cơ bản sử dụng ScriptableObject cho dữ liệu vật phẩm và quản lý các ô chứa trong UI.

UI
Gameplay
Inventory
ScriptableObject
Architecture

Quản lý thanh thể lực cho các hành động như chạy nước rút. Thể lực sẽ giảm khi chạy và tự động hồi lại khi đứng yên.

Gameplay
Player
Stamina
UI

Một hệ thống linh hoạt cho phép người chơi tương tác với nhiều loại đối tượng (cửa, vật phẩm, NPC, công tắc) chỉ bằng một nút bấm (E) khi ở trong tầm, kèm hiển thị gợi ý trên màn hình.

Interaction
Gameplay
Player
Architecture
Interface
UI

Một script quản lý việc chuyển cảnh trong Unity, bao gồm cả việc tải cảnh bất đồng bộ (asynchronously) với thanh tiến trình (loading bar).

Gameplay
Scene Management
UI

Hướng dẫn cách tạo một bản đồ nhỏ đơn giản bằng cách sử dụng một Camera thứ hai và một Render Texture để hiển thị lên UI.

UI
Camera
Navigation
Render Texture

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

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