文档章节

用Navigation寻路 怎么才能判断人物到达目的地

b
 byesameVR
发布于 2017/09/08 16:46
字数 495
阅读 8
收藏 0

用了Navigation寻路,用代码怎么才能判断人物到达目的地,从而让人物从Move状态转到Idle状态,求救。

void FixedUpdate()
{
Vector3 point;
RaycastHit hit;//射线碰到的物体
if (Input.GetMouseButton(0))
{

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
if (Physics.Raycast(ray, out hit))
{
point = hit.point;//得到碰撞点的坐标
GetComponent<NavMeshAgent>().destination = point;
}
}
} 

回复1:NavMeshAgent.remainingDistance

回复2:谢谢大神秒回,我用这个代码,可是角色到了目的地 还是在Move状态 if (nav.remainingDistance == 0) { animator.SetBool("Move", false); } else { animator.SetBool("Move", true); }

人物移动到目的地后 是原地踏步没有到Idle状态,,,

回复3: if (nav.remainingDistance <= nav.stoppingDistance + 0.1f)

回复4:解决了,取绝对值就行了。新手们注意。。。。
if (Mathf.Abs(nav.remainingDistance) < 0.01)
{
animator.SetBool("Move", false);
}
else
{
animator.SetBool("Move", true);
}

 

回复4:

navMeshAgent调用setDestination 后,会有一个计算路径的时间,计算过程中pathPending为true. 在这个过程中remainingDistance一直为0.

回复5:

判断到达目的地不能用距离为0,应该是小于一个比零大一点点的数,所有涉及浮点数判断的,用等于一定要谨慎,因为浮点数是不精确的,原因大概是这样:
机器只判断1和0,本身是无法识别小数的,我们只能用科学计数法去逼近小数。比如说二进制的110.11换算成十进制是1*2^2+1*2^1+0*2^0+1*2^(-1)+1*2^(-2)=6.75,那么反过来如果想要表示一个十进制的小数,转成二进制,某些数可以精确表示,比如0.75就是二进制0.11,
0.5就是二进制0.1,但如果是0.623这种呢,好像就不能准确表示了,二进制所能表示的数只能是n个2的m次方相加,这个虽然可以无限去逼近任一个数,但永远是离散的,而真实的浮点数是连续的,所以多数情况下是不精确的。

 

本文转载自:

共有 人打赏支持
b
粉丝 0
博文 4
码字总数 0
作品 0
青岛
unity自动寻路

unity已经集成 好了自动寻路,很简单就能使用了 步骤是 bake地图 创建代码 打开Navigation 窗口 ,带了mesh renderer 的才可以添加 选择为Not Walkable,障碍物设置完成后就可以点击bakek按钮...

梦想游戏人
2016/03/31
76
0
Unity-BattleStar丨9.BattleStar实战:给游戏添加物理系统

本节要实现的目标: 1、玩家拾取血包增加血量 2、玩家可用激光对NPC造成伤害 一、导入资源文件 文件下载:地址 1、导入Package 2、运行Scenes里面的BattleStarGameScene场景,观察 3、我们发...

weixin_38239050
05/24
0
0
AS3 做webGame 地图寻路实例 .

总结目的 在地图中,通过鼠标或者由程序自动运行,让一个人物自动从地图的一点走到另一点。需要计算两点之间的最优路线,要实现这样的寻路算法。最常规和最简单的方法,使用A算法。本篇总结不...

小木头的冬天
2016/07/27
14
0
【文集】寻路算法汇总

寻路是游戏开发中非常重要的一部分,能够让人物的操作更符合玩家想要的行为 先来一个在Unity3D中实现自动寻路的文章 Unity3D 自动寻路 在Unity3D中实现以及调试A*寻路算法 Unity3D A* 寻路...

CatherinePlans
2017/11/05
0
0
Unity导航 (寻路系统Nav Mesh Agent)

第一种 简单寻路 地面接触到的。到达目标点不用跳跃能够一直走路到达。 场景视图中简单搭设几个物体。如图1 胶囊体为寻路者,黄球为目标点 红地板,绿色障碍物。 现将地板以及障碍物选中 在检...

宁金峰
06/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

JS:异步 - 面试惨案

为什么会写这篇文章,很明显不符合我的性格的东西,原因是前段时间参与了一个面试,对于很多程序员来说,面试时候多么的鸦雀无声,事后心里就有多么的千军万马。去掉最开始毕业干了一年的Jav...

xmqywx
今天
0
0
Win10 64位系统,PHP 扩展 curl插件

执行:1. 拷贝php安装目录下,libeay32.dll、ssleay32.dll 、 libssh2.dll 到 C:\windows\system32 目录。2. 拷贝php/ext目录下, php_curl.dll 到 C:\windows\system32 目录; 3. p...

放飞E梦想O
今天
0
0
谈谈神秘的ES6——(五)解构赋值【对象篇】

上一节课我们了解了有关数组的解构赋值相关内容,这节课,我们接着,来讲讲对象的解构赋值。 解构不仅可以用于数组,还可以用于对象。 let { foo, bar } = { foo: "aaa", bar: "bbb" };fo...

JandenMa
今天
1
0
OSChina 周一乱弹 —— 有人要给本汪介绍妹子啦

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享水木年华的单曲《中学时代》@小小编辑 手机党少年们想听歌,请使劲儿戳(这里) @须臾时光:夏天还在做最后的挣扎,但是晚上...

小小编辑
今天
18
4
centos7安装redis及开机启动

配置编译环境: sudo yum install gcc-c++ 下载源码: wget http://download.redis.io/releases/redis-3.2.8.tar.gz 解压源码: tar -zxvf redis-3.2.8.tar.gz 进入到解压目录: cd redis-3......

hotsmile
今天
2
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部