玩武易传奇36区里面提示没法寻路到达目的地 英文怎样回事?

给我们留言
地址:福建省晋江市青阳街道洪山路国际工业设计园纳金网
***: 400-067-3919
(周一到周五, 周六周日休息)
设计师入口
1 第1页 | 共2 页
查看: 4167|回复: 10
最后登录注册时间阅读权限30积分635
初级设计师, 积分 635, 距离下一级还需 365 积分
纳金币0 精华3
& && && &不少游戏中,你只需在屏幕上单击一下,角色就可以向那个地方奔跑,然后到达目的地停了下来 ,Dota里面就是这样的 。今天,就让我们来实现这一功能吧。我们这次是借助里面的自动寻路组件来实现这一功能,所以对此组件不熟悉的读者我希望您事先看一下这方面的资料,不会花你多长时间的。好了,让我们开始吧!
& && &&&首先,我们得有一个工作目录,所以我们得新建一个工程,我把它命名为:TestNavMeshAgent,然后保存当前的Scene,给它一个名字:RobotNavMesh。接下来我们开始搭建我们的场景了。因为我不会做模型,所以像往常一样,我从别的工程里面抠出了一个角色:Robot,还是官方的CharacterAnimation这个工程里的一个机器人模型。我们得新建一个平面(用Cube做的)作为Robot落脚的地方,还是给这个平面一个颜色吧,并且加一个灯光吧。调节一下摄像机的位置与旋转角到一个比较合适的程度,就像下面这样:
我们接下来该烘焙平面,生成导航网格了。如果读者对此部分不是很熟悉,建议认真研究一下,也没什么难度,如果不熟悉英文,就到Unity圣典上看中文算了。
& && &&&好了,我们开始烘焙场景了。选中我们的地面,然后打开Navigation窗口:Window-&Navigation。勾选Navigation Static 这个选项,并且打开Navigation Layer下拉菜单,然后选择Default,最后单击Navigation窗口的右下角的Bake按钮。我们可以发现,Scene中的地面颜色发生了改变,如:
这就是导航网格生成后的场景。然后我们往Robot身上添加一个组件:NavMeshAgent,即:Unity菜单栏:Component-&Navigation-&Nav Mesh Agent。这个组件就是寻路系统的核心组件,我们接下来将利用这个组件来完成Robot的移动了。接下来我们必须写几个脚本,我写了3个脚本:RayCastPerFrame.cs,& & NavMeshController.cs,& && & RobotNavAnimaiton.cs。RayCastPerFrame.cs的代码如下:
using UnityE
using System.C
public class RayCastPerFrame : MonoBehaviour {//这个脚本将要被附着到Robot身上
& & private RaycastHit hitI
& & void Update () {
& && &&&if(Input.GetMouseButtonDown(1)){//当我们点击右键时,
& && && && & Physics.Raycast(Camera.main.ScreenPointToRay(Input.mousePosition),out hitInfo);
& && && && &//以摄像机为原点,向鼠标光标世界坐标点发射射线投射碰撞
& && && &}
& & public RaycastHit GetHitInfo()
& && &&&return hitI//得到碰撞信息
这个脚本比较简单,是专门获取射线碰撞信息hitInfo的。
NavMeshController.cs的代码如下:
using UnityE
using System.C
public class NavMeshController : MonoBehaviour {//此脚本将附着到Robot上
& & public RayCastPerF//待会会将Robot拖拽到这个变量上,为的是直接访问Robot身上的RayCastFrame脚本。
& & private NavMeshA//用于存储Robot身上附带的NavMeshAgent组件
void Start () {
& & nma = gameObject.GetComponent&NavMeshAgent&();
& && && && &//实例化nma
void Update () {
& && &&&if(!rcpf){
& && && && &
& && &&&RaycastHit hit = rcpf.GetHitInfo();//获取碰撞点
& && &&&if (hit.transform)
& && && && &nma.SetDestination(hit.point);//设置目的地位射线与平面的碰撞点
RobotNavAnimaiton.cs的代码如下:
using UnityE
using System.C
public class RobotNavAnimation : MonoBehaviour {//此脚本呢附着在Robot身上
& & private NavMeshA//用于存储Robot身上附带的NavMeshAgent组件
& & void Start()
& && &&&nma = gameObject.GetComponent&NavMeshAgent&();//实例化nma
& && &&&animation.AddClip(animation[&shoot&].clip, &shootUpperBody&);
& && &&&animation[&shootUpperBody&].AddMixingTransform(transform.Find(&mover/gun&));
& && &&&animation[&shootUpperBody&].AddMixingTransform(transform.Find(&mover/roothandle/spine1&));
& && &&&animation.wrapMode = WrapMode.L
& && &&&animation[&jump&].wrapMode = WrapMode.C
& && &&&animation[&shoot&].wrapMode = WrapMode.C
& && &&&animation[&shootUpperBody&].wrapMode = WrapMode.C
& && &&&animation[&idle&].layer = -1;
& && &&&animation[&***n&].layer = -1;
& && &&&animation.Stop();
void Update () {
& && &&&if (nma.remainingDistance != 0)//如果导航代理还没有到达目的地,则播放跑的动画。
& && && && &animation.CrossFade(&***n&);
& && && && &//animation[&***n&].speed = Mathf.Sign(Input.GetAxis(&Vertical&));
& && &&&else //否则播放站立的动画
& && && && &animation.CrossFade(&idle&);
& && &&&if (Input.GetButtonDown(&Jump&))
& && && && &animation.CrossFade(&jump&, 0.3f);
& && &&&if (Input.GetButtonDown(&Fire1&))
& && && && &if (animation[&***n&].weight & 0.5f)
& && && && && & animation.CrossFadeQueued(&shootUpperBody&, 0.3f, QueueMode.PlayNow);
& && && && &else
& && && && && & animation.CrossFadeQueued(&shoot&, 0.3f, QueueMode.PlayNow);
这个脚本涉及到了动画的混合,现在就先将就着看吧,我或许会在接下来的日子里写出我的第四篇有关与动画方面的文章,有兴趣的可以留意一下。
& && &&&最后,我们将这三个脚本绑定在Robot上面,并且在Hierarchy面板中将Robot拖拽到NavMeshController这个脚本中的Rcpf这个选项上,如下图:
寻路时的状态,已经达到了我们想要的效果。
我们还可以家一个障碍物,这个就留给读者自己添加吧。可是你有没有注意到一点,RayCastPerFrame .cs这个射线检测的脚本是每帧都在检测,NavMeshController.cs也是每帧都在获取碰撞信息,每帧设定目的地。这个就相当消耗性能。那么这个问题就留给读者自行解决吧!我提个思路,比如说当距离上次检测碰撞信息的时间超过0.1s时设置导航网格代理的目的地,这个应该是很好实现的。
我把工程给贡献出来,有兴趣的读者不妨下载下来研究一下。
10:02 上传
点击文件名下载附件
0 Bytes, 下载次数: 252
最后登录注册时间阅读权限90积分23569
资深设计师, 积分 23569, 距离下一级还需 26431 积分
纳金币19763 精华62
寻路系统很少有这方面的介绍,谢谢了!!
最后登录注册时间阅读权限50积分1213
助理设计师, 积分 1213, 距离下一级还需 787 积分
纳金币61 精华0
记得貌似有个啥专业A星寻路的插件。
最后登录注册时间阅读权限90积分16560
资深设计师, 积分 16560, 距离下一级还需 33440 积分
纳金币16564 精华0
好东西好东西!好东西好东西!
最后登录注册时间阅读权限90积分33058
资深设计师, 积分 33058, 距离下一级还需 16942 积分
纳金币32449 精华23
来围观!!!
最后登录注册时间阅读权限90积分13518
资深设计师, 积分 13518, 距离下一级还需 36482 积分
纳金币13519 精华0
wed 3d 纳金网
最后登录注册时间阅读权限90积分23569
资深设计师, 积分 23569, 距离下一级还需 26431 积分
纳金币19763 精华62
最后登录注册时间阅读权限90积分26681
资深设计师, 积分 26681, 距离下一级还需 23319 积分
纳金币12782 精华80
&&lZ的回复很不错,支持!
最后登录注册时间阅读权限10积分36
设计初学者, 积分 36, 距离下一级还需 64 积分
纳金币16 精华0
认真学习中& && && && && && && && &
最后登录注册时间阅读权限90积分26681
资深设计师, 积分 26681, 距离下一级还需 23319 积分
纳金币12782 精华80
来支持一下楼主的帖子哦
1 第1页 | 共2 页
站长推荐 /1
纳金名模第132期鱼3d模型:数量58个,大小为70MB。完全免费下载哦!这样的福利我和我的小伙伴们都惊呆了!!下载地址:
400-067-3919
Powered by - X2.5
Narkii Inc.当前位置: &
忍龙如何进行自动寻路功能到达目的地
来源:编辑:小G
忍龙如何进行自动寻路功能到达目的地忍龙如何进行自动寻路功能到达目的地?在任务中,按照任务提示点击所需要寻找的NPC即可进行自动寻路到达指定的NPC位置。在地图(按&M&键)中选择世界地图点击所需到达的位置也可以实现自动寻路功能。
找网页游戏,就上265G!
责任编辑:265g编辑
911200010雷囧强赞软文悲剧愤怒搞笑无聊期待
画面:横版,Q版,2D
题材:武侠
玩法:即时
新游期待榜
大家都在玩
想知道更多的攻略吗那就扫描二维码OR搜索265G,订阅265G官方微信吧!
265G推荐游戏

参考资料

 

随机推荐