Unity - SetDestination"只能在已放置在NavMesh上的活动代理上调用.UnityEng

本文关键字:NavMesh 活动 UnityEng 调用 代理 SetDestination quot Unity | 更新日期: 2023-09-27 17:50:54

我现在使用的是Unity5。当尝试设置目的地时,我得到了这个错误。

"SetDestination"只能在已放置在NavMesh上的活动代理上调用。UnityEngine.NavMeshAgent: SetDestination (Vector3)CompleteProject.EnemyMovement:Update() (at Assets/_CompletedAssets/Scripts/Enemy/EnemyMovement.cs:30)

我的代码。

using UnityEngine;
using System.Collections;
namespace CompleteProject
{
    public class EnemyMovement : MonoBehaviour
    {
        Transform player;               // Reference to the player's position.
        PlayerHealth playerHealth;      // Reference to the player's health.
        EnemyHealth enemyHealth;        // Reference to this enemy's health.
        NavMeshAgent nav;               // Reference to the nav mesh agent.

        void Awake ()
        å{
            // Set up the references.
            player = GameObject.FindGameObjectWithTag ("Player").transform;
            playerHealth = player.GetComponent <PlayerHealth> ();
            enemyHealth = GetComponent <EnemyHealth> ();
            nav = GetComponent <NavMeshAgent> ();
        }

        void Update ()
        {
            // If the enemy and the player have health left...
            if(enemyHealth.currentHealth > 0 && playerHealth.currentHealth > 0)
            {
                // ... set the destination of the nav mesh agent to the player.
                nav.SetDestination (player.position);
            }
            // Otherwise...
            else
            {
                // ... disable the nav mesh agent.
                nav.enabled = false;
            }
        }
    }
}

参考:https://github.com/datomnurdin/SurvivalShooter

Unity - SetDestination"只能在已放置在NavMesh上的活动代理上调用.UnityEng

1。确保你的thirdPersonController在地面之上。

2。点击窗口->导航->烘焙,点击烘焙。蓝色区域是第三人可以到达的地方

在使用NavMeshAgent或其他与导航相关的东西之前,你需要添加一个Navmesh到你的场景中。

这是Unity关于导航的一些视频

  1. 你的地板(平面或四方)必须是静态的。
  2. 为玩家或敌人添加NavmeshAgent组件

你可以在检查器面板上找到静态复选框

解决方案是:navMeshAgent.enabled = false你必须使用:navMeshAgent.isStopped = true

windows>AI>勾选导航静态然后点击Bake再点击底部烘焙

您只需将nav.SetDestination(player.position);方法更改为nav.destination = player.position;