Що таке NavMeshAgent в Unity C#?
Клас NavMeshAgent в Unity використовується для створення та керування агентами, які можуть пересуватись заздалегідь розрахованими навігаційними сітками (NavMesh). Це корисно для створення штучного інтелекту, який може рухатись і уникати перешкод у ігровому світі.
Агенти NavMeshAgent можуть слідкувати за ціллю, змінювати маршрут і враховувати динамічні зміни в оточенні. Вони використовують навігаційну сітку, створену за допомогою інструмента NavMesh.
using UnityEngine;
using UnityEngine.AI;
public class EnemyAI : MonoBehaviour
{
private NavMeshAgent agent;
public Transform target;
void Start()
{
agent = GetComponent<NavMeshAgent>();
if (target != null)
{
agent.SetDestination(target.position);
}
}
void Update()
{
if (target != null)
{
agent.SetDestination(target.position);
}
}
}
У цьому прикладі агент налаштований на стеження за ціллю, яка передається через публічне поле target. Метод SetDestination використовується для встановлення поточної цілі руху.
NavMeshAgent надає багато корисних властивостей і методів, таких як швидкість, радіус повороту, і можливість динамічно змінювати маршрут. Наприклад, можна змінювати швидкість агента залежно від ситуації або перевіряти, чи досяг він цілі за допомогою методу remainingDistance.
Для роботи з NavMeshAgent необхідно заздалегідь створити навігаційну сітку. Це робиться через панель Bake в Unity. Зверніть увагу, що для коректної роботи агенти повинні знаходитися на одному рівні з поверхнею NavMesh.