88.208
94.8324
14.06.2024
06:18:44

Как в NavMeshAgent понять, что объект достиг заданной точки

Для определения того, чего достиг объект заданной точки при использовании NavMeshAgent в Unity, вы можете проверить текущее положение объекта относительно цели и сравнить его с радиусом приемлемой вариации. Вот как это можно сделать в коде:


 
using UnityEngine;
using UnityEngine.AI;

public class YourScript : MonoBehaviour
{
  private NavMeshAgent agent;
  public Transform target; // Задайте цель (точку, которую нужно достичь) через инспектор
  public float distanceThreshold = 0.5f; // Радиус приемлемой близости

  private void Start()
  {
    agent = GetComponent();
    // Установите начальную цель для NavMeshAgent
    agent.SetDestination(target.position);
  }

  private void Update()
  {
    // Проверяем расстояние между текущим положением и целью
    float distanceToTarget = Vector3.Distance(transform.position, target.position);

    // Если расстояние меньше заданного порога, считаем, что объект достиг цели
    if (distanceToTarget <= distanceThreshold)
    {
      Debug.Log("Объект достиг цели!");
      // Здесь можно выполнить дополнительные действия, если объект достиг цели
    }
  }
}
 

Этот код сначала определяет текущее расстояние между объектом, на котором находится NavMeshAgent, и заданной Целью ( target ). Затем он сравнивает расстояние с заданным порогом ( distanceThreshold ). Если расстояние меньше или равно порогу, то объект считается достигнутым.

Вы можете настроить distanceThreshold в зависимости от вашего приложения, чтобы определить, насколько близко объект должен подойти к цели, прежде чем считаться достигшим ее.

28.09.2023 11:32

Лента статей

Наверх