"SetDestination" can only be called on an active agent that has been placed on a NavMesh

Делал уничтожение / убийство врага, при уничтожение вылазит ошибка, как я понимаю ошибка в том что враг не может найти NavMesh для нахождения пути, пробывал по разному и проверять на activeSelf и на просто уничтожать, но ни как не работает =(

Ошибка >> "SetDestination" can only be called on an active agent that has been placed on aNavMesh. UnityEngine.AI.NavMeshAgent:SetDestination (UnityEngine.Vector3)

Код >>


using UnityEngine;
using UnityEngine.AI;

public class FindPlayer : MonoBehaviour
{
    // public static
    public static float enemyHealth = 100;
    
    [Header("Враг")] 
    [SerializeField] private Material _material;
    [SerializeField] private float _enemyDamage = 20;
    
    [Header("Цель")]
    [SerializeField] private NavMeshAgent _agent;
    
    private void Start()
    {
        _material = gameObject.GetComponent<MeshRenderer>().material;
        _agent = GetComponent<NavMeshAgent>();
    }

    private void OnTriggerStay(Collider _collider)
    {
        switch (_collider.gameObject.tag)
        {
            case "Player":
            {
                if (_collider.gameObject.activeSelf)
                {
                    _agent.SetDestination(_collider.transform.position);
                    _material.color = Color.red;
                }
                break;
            }
            default:
            {
                if (_collider.gameObject.activeSelf)
                {
                    _agent.SetDestination(transform.position); 
                    _material.color = Color.white;    
                }
                break;
            }
        }
    }

    private void OnCollisionEnter(Collision _collision)
    {
        switch (_collision.gameObject.tag)
        {
            case "Player":
            {
                GetTarget.playerHealth -= _enemyDamage;
                break;
            }
        }
    }
}



Ответы (1 шт):

Автор решения: aepot

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

if (_agent.isActiveAndEnabled)
{
    _agent.SetDestination(...);
}
→ Ссылка