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
1。确保你的thirdPersonController在地面之上。
2。点击窗口->导航->烘焙,点击烘焙。蓝色区域是第三人可以到达的地方
在使用NavMeshAgent或其他与导航相关的东西之前,你需要添加一个Navmesh到你的场景中。
这是Unity关于导航的一些视频
- 你的地板(平面或四方)必须是静态的。
- 为玩家或敌人添加NavmeshAgent组件
你可以在检查器面板上找到静态复选框
解决方案是:navMeshAgent.enabled = false
你必须使用:navMeshAgent.isStopped = true
windows>AI>勾选导航静态然后点击Bake再点击底部烘焙
您只需将nav.SetDestination(player.position);
方法更改为nav.destination = player.position;