SetDestination()当我为 NavMeshAgent 和Debug.Log()每一帧设置无法到达的目标位置时NavMeshAgent.remainingDistance,我会获取Infinity一些路径,直到它开始返回浮点数(21.21864、21.0846、20.95449...),直到它尽可能接近目的地,这返回 0。
如何从脚本在运行时烘焙 NavMesh。我在谷歌搜索但没有找到。
一些渲染场景和按钮,包括bake
我使用播放器上的导航网格/代理作为辅助自动路径功能,其中代理始终处于禁用状态,除非用户单击地板上的某个点走向。然后,一旦到达目的地,代理将再次被禁用。
我需要一种方法来检查玩家当前是否位于导航网格上,在可容忍的阈值内,而无需启用导航网格代理。或者,如果有一种方法可以删除 navmeshagent 的玩家绑定“效果”而不禁用它,因为我也可以用它来解决我的问题。
我想在伪代码中,这就是我试图在禁用 navmeshagent 的情况下完成的任务:
if (!agent.isOnNavMesh){ DisableClickSelection();}
Run Code Online (Sandbox Code Playgroud)
我正在考虑是否可以比较玩家和导航网格的 Y 变换以获得高度差,并使用它来确定玩家是否在导航网格上,但我不知道如何获取导航网格位于特定的 X 和 Z 点。也许我可以使用光线投射?我不确定最好的方法。就像我说的,如果有一种方法可以消除代理对玩家的玩家绑定“效果”,但保持代理启用,我也可以使用它。
越过山丘时, NavmeshAgent 玩家与山坡不平行。在平面上它进展顺利。
下面是navMesh 和播放器的 图像属性https://ibb.co/fijmoV
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.AI;
public class SampleAgentScript : MonoBehaviour {
public Transform target ;
NavMeshAgent agent;
// private static bool start1=false , start2=false, start3;
// Use this for initialization
void Start()
{
agent = GetComponent<NavMeshAgent>();
}
void Update()
{
//if white button click moves to targer-1
agent.SetDestination(target.position);
}
}
Run Code Online (Sandbox Code Playgroud)