Unity3d EnemyMovement C#NavMesh代理错误

Unity3d EnemyMovement C#NavMesh代理错误,unity3d,Unity3d,嗨,当玩家靠近敌人时,我试图让敌人向玩家移动。这是我的剧本 public float lookRadius=10f; 转化目标; NavMesh代理; //用于初始化 无效开始(){ target=PlayerManager.instance.player.transform; agent=GetComponent(); } //每帧调用一次更新 无效更新(){ 浮动距离=矢量3.距离(target.position,transform.position); 如果(距离) 只能对已放置在NavM

嗨,当玩家靠近敌人时,我试图让敌人向玩家移动。这是我的剧本

public float lookRadius=10f;
转化目标;
NavMesh代理;
//用于初始化
无效开始(){
target=PlayerManager.instance.player.transform;
agent=GetComponent();
}
//每帧调用一次更新
无效更新(){
浮动距离=矢量3.距离(target.position,transform.position);
如果(距离)
只能对已放置在NavMesh上的活动代理调用“SetDestination”

这是因为你需要烘焙NavMesh,它本质上定义了什么网格是可行走的,什么网格不是,所以你的代理知道他们可以行走什么

如何烘焙NavMesh

  • 打开导航窗口。[窗口>导航]
  • 在inspector中选择所有可行走曲面并将其标记为Navigation Static(或简单地勾选Static)(使用Static复选框旁边的下拉列表)

    • 将一个对象标记为静态是一种表明该对象在游戏过程中根本不会移动的方法
  • 在“对象”选项卡中,将当前选定的网格标记为可漫游或不可漫游

  • 完成后,在导航窗口下的“烘焙”选项卡中,单击“烘焙”

    • 请注意,烘焙过程中将只考虑具有网格的对象
  • 您的最终结果应该如下所示:

  • 蓝色区域表示“可行走”区域。此蓝色轮廓仅在导航窗口打开并选中场景窗口右下角的“显示NavMesh”复选框时显示

    确保您的代理在启动期间始终处于蓝色区域内。如果将其目标设置为没有navmesh的区域,或者由于任何原因失败,则SetDestination将返回false