自动寻路NavMesh
步骤
1.创建地形
2.添加角色
3.创建多个障碍物,尽量摆放的复杂些,用来检测NavMesh的可用性和效率
4.选中地形,在Navigation窗口中,设置Navigation Static
5.依次选中障碍物,在Navigation窗口中,设置Navigation Static
6.在Navigation窗口中,选择Bake(烘焙)界面,点击Bake按钮,进行场景烘焙,就可以烘焙出寻路网格了
7.为角色添加NavMeshAgent组件。Component->Navigation->Nav Mesh Agent
8.为角色新增一个脚本PlayerController.cs,实现点击目标,自动寻路功能
using UnityEngine;
using System.Collections; public class PlayerController : MonoBehaviour { private NavMeshAgent agent; void Start () {
// 获取组件
agent = GetComponent<NavMeshAgent>();
} void Update () { //鼠标左键点击
if(Input.GetMouseButtonDown())
{
Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);
RaycastHit hit;
if(Physics.Raycast(ray,out hit))
{
//判断点击的是否地形
if (!hit.collider.name.Equals("Terrain"))
return; //点击位置坐标
Vector3 point = hit.point; //转向
transform.LookAt(new Vector3(point.x, transform.position.y, point.z)); //设置寻路的目标点
agent.SetDestination(point);
}
}
}
}
相关知识
1.角色身上的Nav Mesh Agent组件
Radius半径:代理的半径(仅用于寻路目的,可以跟实际对象的半径大小不一样,一般比实际对象的半径大)
Speed速度:代理走向它的目的地的最大移动速度
Acceleration加速度:最大加速度
Angular Speed角速度:最高转速(度/秒)
Stopping distance制动距离:到目的地的距离小于这个值,代理减速
Auto Traverse Off Mesh Link自动遍历Off Mesh链接:自动移动并关闭Off Mesh Links
Auto Repath自动重新寻路:如果现有的部分已失效,获得新的路径
Hight高度:代理的高度(用于调试图形)
Base offset基本偏移:碰撞几何体相对于实际集合体垂直的偏移
Obstacle Avoidance障碍躲避:躲避的质量水平
Area Mash:执行代理可以遍历的导航网格层类型
2.障碍物一定要有Mesh Renderer,用于烘焙寻路网格
自动寻路NavMesh的更多相关文章
- Unity自动寻路Navmesh之高级
隔离层自动生成寻路网格 (源码scene1.unity) 1.创建Plane实例P1,P2,两者之间出现一条鸿沟.直接控制角色位移是无法通过的. 2.打开Navigation窗口,分别选中P1,P2, ...
- Unity自动寻路Navmesh之入门
实例 我们要实现一个功能:点击场景中的一个位置,角色可以自动寻路过去.角色会绕过各种复杂的障碍,找到一条理论上”最短路径“. 步骤 1.创建地形 2.添加角色 3.创建多个障碍物,尽量摆的复杂一点,来 ...
- Unity手游之路<八>自动寻路Navmesh之入门
http://blog.csdn.net/janeky/article/details/17457533 在的大部分mmo游戏都有了自动寻路功能.点击场景上的一个位置,角色就会自动寻路过去.中间可能会 ...
- Unity手游之路<九>自动寻路Navmesh之高级主题
http://blog.csdn.net/janeky/article/details/17492531 之前我们一起学习了如何使用Navmesh组件来实现最基本的角色自动寻路.今天我们再继续深入探索 ...
- Unity手游之路<十>自动寻路Navmesh之跳跃,攀爬,斜坡
http://blog.csdn.net/janeky/article/details/17598113 在之前的几篇Blog总,我们已经系统学习了自动寻路插件Navmesh的相关概念和细节.然而,如 ...
- Unity手游之路自动寻路Navmesh之高级主题
http://blog.csdn.net/janeky/article/details/17492531 之前我们一起学习了如何使用Navmesh组件来实现最基本的角色自动寻路.今天我们再继续深入探索 ...
- Unity手游之路自动寻路Navmesh之入门
http://blog.csdn.net/janeky/article/details/17457533 现在的大部分mmo游戏都有了自动寻路功能.点击场景上的一个位置,角色就会自动寻路过去.中间可能 ...
- Unity 自动寻路Navmesh之跳跃,攀爬,斜坡
在之前的几篇Blog总,我们已经系统学习了自动寻路插件Navmesh的相关概念和细节.然而,如果要做一个场景精美的手游,需要用到各种复杂的场景地形,而不仅仅是平地上的自动寻路.今天我们将通过一个完整的 ...
- Unity手游:自动寻路Navmesh 跳跃 攀爬 斜坡
原地址:http://dong2008hong.blog.163.com/blog/static/46968827201403114644210/ 步骤 1.在场景中摆放各种模型,包括地板,斜坡,山体 ...
随机推荐
- 【转】Git代码提交最佳实践
GIT Commit Good Practice The following document is based on experience doing code development, bug ...
- 学习opencv中文版教程——第二章
学习opencv中文版教程——第二章 所有案例,跑起来~~~然而并没有都跑起来...我只把我能跑的都尽量跑了,毕竟看书还是很生硬,能运行能出结果,才比较好. 越着急,心越慌,越是着急,越要慢,越是陌生 ...
- 关于MapReduce
MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算.概念“Map(映射)”和“Reduce(归纳)”,及他们的主要思想,都是从函数式编程语言借来的,还有从矢量 ...
- Linux 查看文件修改
在以前知道在Linux下查看Tomcat日志文件, tail -f catalina.out 同样的命令"tail -f filename",我就可以看其它日志文件啦: tail ...
- [CSS][转载]内层div的margin-top影响外层div
参考 内层div的margin-top影响外层div——引出外边距合并 div嵌套导致子区域margin-top失效不起作用的解决方法 我使用的是在外层的div中添加 border: 1px soli ...
- 浅谈SqlCommand
初学asp.net 的菜鸟应该都会像我一样想尝试一下前后台的交互吧!特别是与数据库的交互.下面就来说一下自己的个人经历. SqlCommand 首先需要引入system.Date.SqlClient命 ...
- files_dir
一.opendir() —— 打开目录 opendir( 打开的当前目录 ); 二.closedir() —— 关闭目录 三.readdir() —— 返回目录中的各个元素,返回上一个并且指向 ...
- Unity3D 之UGUI制小地图
这里使用UGUI制作一个小地图. 方法一: 第一步:使用UGUI弄一个地图背景和人物指针 第二步:脚本获取人物的位置和角度给人物指针进行同步 将 PlayerIconController.cs 文件绑 ...
- R cannot be resolved to a variable 解决办法
Android开发过程中,碰到R cannot be resolved to a variable的报错信息,好像没有很确定的错误原因,一般来说,我总结出几个可能的解决方法,希望试过以后管用... 1 ...
- onActivityResult调用不到的问题
有可能是调用时机不对,请转移到: http://www.cnblogs.com/shaweng/p/3875825.html 还有可能是Activity的launchmode导致的 使用 androi ...