Làm việc với NavMeshAgent trong Unity

Trong Unity, NavMeshAgent là một thành phần mạnh mẽ cho phép bạn triển khai tính năng tìm đường và điều hướng cho các nhân vật hoặc đối tượng trong trò chơi của mình. Nó sử dụng hệ thống điều hướng tích hợp của Unity để tính toán đường dẫn trên bề mặt NavMesh. Trong hướng dẫn này, chúng tôi sẽ đề cập đến những kiến ​​thức cơ bản về thiết lập và sử dụng NavMeshAgent bằng các ví dụ về mã.

Điều kiện tiên quyết

  • Hiểu biết cơ bản về Unity interface và các khái niệm phát triển trò chơi.
  • Unity đã cài đặt trên hệ thống của bạn (phiên bản 2017 trở lên).

Thiết lập NavMesh trong Unity

Trước khi đi sâu vào sử dụng NavMeshAgent, chúng ta cần thiết lập NavMesh trong cảnh của mình.

  1. Tạo bề mặt NavMesh:

    • Đi tới 'GameObject -> 3D Object -> NavMesh Surface'. Điều này tạo ra một GameObject mới có đính kèm thành phần 'NavMeshSurface'.
    • Điều chỉnh cài đặt của thành phần NavMesh Surface nếu cần cho cảnh của bạn.
  2. Nướng NavMesh:

    • Nhấp vào nút 'Bake' trong thành phần 'NavMesh Surface' để tạo NavMesh cho cảnh của bạn.
    • Đảm bảo rằng môi trường của bạn (địa hình, chướng ngại vật, v.v.) được cấu hình đúng cách để cho phép tìm đường chính xác.

Sử dụng NavMeshAgent trong mã

Bây giờ, hãy viết một số mã để thực hiện di chuyển GameObject bằng NavMeshAgent.

Bước 1: Đính kèm NavMeshAgent vào GameObject

  • Đính kèm thành phần NavMeshAgent vào GameObject của bạn trong trình chỉnh sửa Unity. Bạn có thể thực hiện việc này bằng cách chọn GameObject, nhấp vào 'Add Component', sau đó thêm 'NavMeshAgent'.

Bước 2: Viết kịch bản cho chuyển động

  • Tạo một tập lệnh C# mới (ví dụ: 'PlayerController.cs') và đính kèm nó vào GameObject bằng thành phần NavMeshAgent. Mở tập lệnh trong trình soạn thảo mã ưa thích của bạn.
using UnityEngine;
using UnityEngine.AI;

public class PlayerController : MonoBehaviour
{
    private NavMeshAgent navMeshAgent;

    void Start()
    {
        navMeshAgent = GetComponent<NavMeshAgent>();
    }

    void Update()
    {
        // Check for player input or any other conditions to trigger movement
        if (Input.GetMouseButton(0)) // Example: Move towards mouse click position
        {
            MoveToClickPosition();
        }
    }

    void MoveToClickPosition()
    {
        Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
        RaycastHit hit;

        if (Physics.Raycast(ray, out hit))
        {
            // Move NavMeshAgent towards the clicked position
            navMeshAgent.SetDestination(hit.point);
        }
    }
}

Bước 3: Thiết lập bối cảnh và kiểm tra

  • Đảm bảo rằng GameObject của bạn có NavMeshAgent và tập lệnh đính kèm có trong cảnh.
  • Nhấn Play trong Trình chỉnh sửa Unity và quan sát hành vi.
  • Nhấp vào bất kỳ đâu trên bề mặt 'NavMesh' và GameObject sẽ di chuyển về vị trí đó.

Bản tóm tắt

Trong hướng dẫn này, bạn đã học cách thiết lập và sử dụng NavMeshAgent để tìm đường và điều hướng trong Unity. Bằng cách làm theo các bước này và ví dụ về mã, bạn có thể thực hiện chuyển động cơ bản cho các nhân vật hoặc đồ vật trong trò chơi của mình bằng hệ thống điều hướng tích hợp của Unity.