文档章节

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

b
 byesameVR
发布于 2017/09/08 16:46
字数 495
阅读 329
收藏 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
青岛
私信 提问
加载中
请先登录后再评论。
Swift百万线程攻破单例(Singleton)模式

一、不安全的单例实现 在上一篇文章我们给出了单例的设计模式,直接给出了线程安全的实现方法。单例的实现有多种方法,如下面: class SwiftSingleton { } 这段代码的实现,在shared中进行条...

一叶博客
2014/06/20
3.2K
16
beego API开发以及自动化文档

beego API开发以及自动化文档 beego1.3版本已经在上个星期发布了,但是还是有很多人不了解如何来进行开发,也是在一步一步的测试中开发,期间QQ群里面很多人都问我如何开发,我的业余时间实在...

astaxie
2014/06/25
2.7W
21
游戏开发者后端服务--OpenKit

OpenFeint 关门大吉后,OpenFeint 创始人推出了开源项目 OpenKit。OpenKit 支持Unity 3D游戏引擎,并未 iOS 和 Android 的游戏开发者提供开源 API以及存储、数据同步服务。OpenKit 目前提供對...

匿名
2013/03/11
2.9K
0
最短路径计算--A-STAR

A-STAR 寻找一种静态路网(本算法中为二维数组)中求解最短路径的解决办法 我们可以通过: var element = new Element(); 来创建二维数组的一个节点。 element自身包含了一些方法: element....

前叔
2012/12/14
1.8K
0
创新团队的效率工具--TeamToy

TeamToy是什么? TeamToy是专为创新团队设计的效率工具,它以【事】为核心,带动整个团队进行有价值的交流。在设计上,TeamToy以简捷为目标,更适合于移动设备和触屏。 TeamToy和TODO工具有什...

Easychen
2013/01/05
1.4W
0

没有更多内容

加载失败,请刷新页面

加载更多

Python安装第三方库太慢??

今天在升级下载Python第三方库的时候特别慢,最后去升级pip的时候竟然还time out了,哇心态炸了。 问题想清楚了该怎么解决呢? 咱们可以用国内的镜像源啊,于是我在网上搜了一下国内的镜像源...

不卖萌的邓肯
今天
0
0
C语言与C++常见面试题

本篇根据各个公司的面试问的常见问题进行总结。 公众号回复“面试”,获取pdf答案 1 变量的声明和定义有什么区别 2 简述 #ifdef、#else、#endif和 #ifndef的作用 3 写出 int 、bool、 float、...

公众号C语言与CPP编程
今天
0
0
自定义CheckBox快速实现开发

在开发CheckBox过程中,经常感觉功能很简单,就是写了半天代码,尤其是设置监听和判断上,万一有10个以上的CheckBox,还会在复制时由于不小心,出现bug 天啦,这么简单常用的控件出BUG,简直没...

osc_gzy9w31p
5分钟前
0
0
写给小白看的线程和进程,高手勿入

计算机的核心是CPU,它承担了计算机的所有计算任务,CPU就像一个工厂,时刻在运行着,而操作系统管理着计算机,负责任务的调度、资源的分配和管理。 进程和线程都是计算机操作系统中的基本概...

hzjjames
今天
0
0
分布式锁,redisson是如何解决死锁问题

点击上方“小罗技术笔记”,关注公众号 第一时间送达实用干货 作者:雨点的名字 来源:http://suo.im/6748UQ 使用redis做分布式锁时大家可能都知道使用setnx容易发生死锁情况,大多数都会推荐...

javaNode
昨天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部