我目前正在用鼠标控制人物行走,通过unity自带的自动寻路系统,人物朝向鼠标右键点击的地方移动,然而人物在自动寻路过程中,经常最终到达的地方与我鼠标点击的位置有一定的距离,不是精确,且有时候会因为惯性在一个地方盘旋,请问大家有没有遇到过这种问题啊
您好,您可以这样:到达目标点后将NavMeshAgent组件的enabled改成false,若要往下一点继续移动则再激活
这一段是在Unity自动寻路功能的实现(二)
由于我是小白搞了半天才发现精度不对
//获得当前玩家位置和目标点的距离
float dis = Vector3.Distance(transform.position, Points[index].position);
//如果获取的距离小于0.8米,说明已经到达,
if (dis <= 0.8f)//鬼畜抖动的原因在于dis不小于到达值
{
//已经到达目标点,更新索引
if (index == Points.Count - 1)//如果索引是最后一个,更新到最前面一个索引
{
index = 0;
}
else //否则就索引自动增加
{
index++;
}
transform.position = Vector3.MoveTowards(transform.position, Points[index].position, 7.0f * Time.deltaTime);
//移动到目标位置
}
else
{
transform.position = Vector3.MoveTowards(transform.position, Points[index].position, 1.0f * Time.deltaTime);
}