Praca z NavMeshAgent w Unity
W Unity, NavMeshAgent jest potężnym komponentem, który pozwala na implementację wyszukiwania ścieżek i nawigacji dla postaci lub obiektów w grze. Wykorzystuje wbudowany system nawigacji Unity do obliczania ścieżek na powierzchni NavMesh. W tym samouczku omówimy podstawy konfigurowania i używania NavMeshAgent z przykładami kodu.
Warunki wstępne
- Podstawowa znajomość Unity interfejsu i koncepcji tworzenia gier.
- Unity zainstalowany w twoim systemie (wersja 2017 lub nowsza).
Konfigurowanie NavMesh w Unity
Zanim zaczniemy używać NavMeshAgent, musimy skonfigurować NavMesh w naszej scenie.
Utwórz powierzchnię NavMesh:
- Idź do 'GameObject -> 3D Object -> NavMesh Surface'. Spowoduje to utworzenie nowego obiektu GameObject z dołączonym komponentem 'NavMeshSurface'.
- Dostosuj ustawienia komponentu NavMesh Surface zgodnie z potrzebami swojej sceny.
Upiecz NavMesh:
- Kliknij przycisk 'Bake' w komponencie 'NavMesh Surface', aby wygenerować NavMesh dla swojej sceny.
- Upewnij się, że otoczenie (teren, przeszkody itp.) jest odpowiednio skonfigurowane, aby umożliwić dokładne odnajdywanie ścieżki.
Używanie NavMeshAgent w kodzie
Teraz napiszmy kod wykonujący ruch GameObject przy użyciu narzędzia NavMeshAgent.
Krok 1: Dołącz NavMeshAgent do GameObject
- Dołącz komponent NavMeshAgent do obiektu GameObject w edytorze Unity. Możesz to zrobić wybierając obiekt GameObject, klikając 'Add Component', a następnie dodając 'NavMeshAgent'.
Krok 2: Napisz skrypt ruchu
- Utwórz nowy skrypt C# (np. 'PlayerController.cs') i dołącz go do obiektu GameObject za pomocą komponentu NavMeshAgent. Otwórz skrypt w preferowanym edytorze kodu.
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);
}
}
}
Krok 3: Skonfiguruj scenę i przetestuj
- Upewnij się, że na scenie znajduje się obiekt GameObject z NavMeshAgent i załączonym skryptem.
- Naciśnij Play w edytorze Unity i obserwuj zachowanie.
- Kliknij gdziekolwiek na powierzchni 'NavMesh', a GameObject powinien przesunąć się w stronę tej pozycji.
Streszczenie
W tym samouczku nauczyłeś się konfigurować i używać NavMeshAgent do wyszukiwania ścieżek i nawigacji w Unity. Wykonując te kroki i przykłady kodu, możesz zaimplementować podstawowy ruch postaci lub obiektów w swojej grze, korzystając z wbudowanego systemu nawigacji Unity.