Unity自动寻路入门指南
所有用于成为NavMesh的网格都必须被指定为 Navigation Static 。
方法如下,选中GameObject,然后在菜单栏的[Window]-[Navigation]-[Object]-勾选即可。

烘培Bake
点击Bake开始烘培,其中的属性说明如下,可以参照这个图

Agent Radius:Agent的中心可以离障碍物有多近。Agent Height:Agent可以通过的最矮高度。Max Slope:Agent可以爬上的最高坡度。Step Height:Agent每次可以上的最高高度(相当于一节楼梯的高度)。
一般来说,到这里设置完就可以点击Bake了,如果需要高级设置(设置体元和一些孤立的表面),参考这里 nav-AdvancedSettings 。
bake成功以后,选择的mesh表面就会像上面一样变成蓝色。
到这里NavMesh就设置完毕了。
NavMesh Agent设置和脚本编写
很简单, Agent Size 设置可以在Scene面板中实时看到。 - Speed :Agent所能达到的最大速度。 - Angular Speed :最大的转向速度,不是人物的转向,是Agent需要拐弯的时候的最大的转向速度,如果这个过低,将会产生螺旋线路效果。 - Acceleration :Agent到达Speed过程中的加速度,越大越快抵达Speed。 - Stopping Distance :距离目的地多少远的距离停下。 - Auto Braking :在终点是否自动停下,如果不勾选这个,Agent将会在终点绕终点做谐振。 - Priority :多个Agents同时存在时,权重高的将会被忽略,权重取值范围从0到99,0是最重要,默认为50。 - Auto Traverse OffMeshLink :到达 Off-Mesh Link 的位置是否自动触发传送。 设置完以上步骤后,只需以下代码,Agent就会移动到指定位置。
// MoveTo.cs
using UnityEngine;
using System.Collections; public class MoveTo : MonoBehaviour { public Transform goal; void Start () {
NavMeshAgent agent = GetComponent<NavMeshAgent>();
agent.destination = goal.position;
}
}
结合人物动画
官方的 nav-CreateNavMeshAgent 这个DEMO很简单,主要就是通过agent完成寻路,同时控制AnimationController。
关于更完美的例子可以查看 StandardAsset Example 中的 CharacterThirdPersonAI ,结合了第三人称人物动画控制器 ThirdPersonAnimationController 和第三人称人物控制器 ThirdCharacterController 完成了带walk和run的自动寻路。
变量
destination 导航朝目的地。
stoppingDistance 在这个距离内停止从目标位置。
velocity navmesh代理组件的当前速度。
nextPosition 路径上的下一个位置。
remainingDistance 当前路径上的剩余距离。
baseOffset 拥有游戏物体的相对垂直位移。
isOnOffMeshLink 代理目前定位上OffMeshLink。
autoTraverseOffMeshLink 自动运动到和关闭OffMeshLinks。
autoRepath 试图获取一个新的路径,如果现有的路径变为无效
hasPath 代理目前有一个路径。
pathPending 正在计算路径,但还没有准备好
isPathStale 当前路径陈旧。
pathStatus 查询当前路径的状态。
walkableMask 指定巫NavMesh层是差强人意(位域)。更改walkableMask将陈旧的路径(见isPathStale)
speed 最大移动速度。
angularSpeed 最高转速(deg / s的)。
acceleration 最大加速度
updatePosition 如果代理更新变换位置。
updateRotation 如果代理更新变换方向。
radius 代理半径。
height 代理的高度。
obstacleAvoidanceType 避免质量水平
功能
SetDestination 设置或更新的目标。这会触发一个新的路径计算。
ActivateCurrentOffMeshLink 启用或禁用当前 链接。
GetCurrentOffMeshLinkData 提取当前的OffMeshLink状态。
GetCurrentOffMeshLinkGameObject 参考当前OffMeshLink的游戏对象。
CompleteOffMeshLink 终止电流OffMeshLink。
Move 当前位置应用相对运动。
Stop 停止代理的运动沿着目前的道路。
Resume 恢复运动沿着目前的道路。
ResetPath 清除当前路径。请注意,代理将开始寻找一条新的道路,直到SetDestination被称为。
SetPath 指定代理的路径。
DistanceToEdge 找到最近的NavMesh边缘。
Raycast 对一个目标位置的NavMesh的跟踪运动。不移动代理。
SamplePathPosition 采样沿着目前的道路位置。
SetLayerCost 设置为以上的层类型的几何遍历成本。
GetLayerCost 获取超过该层类型的几何遍历成本。
Navigation
Object:物体参数面板
Navigation Static:勾选后表示该对象参与导航网格的烘培。
OffMeshLink Generation:勾选后可跳跃(Jump)导航网格和下落(Drop)。
Bake:烘培参数面板
Radius:具有代表性的物体半径,半径越小生成的网格面积越大。
Height:具有代表性的物体的高度。
Max Slope:斜坡的坡度。
Ste Height:台阶高度。
Drop Height:允许最大的下落距离。
Jump Distance:允许最大的跳跃距离。
Min Region Area:网格面积小于该值则不生成导航网格。
Width Inaccuracy:允许最大宽度的误差。
Height Inaccuracy:允许最大高度的误差。
Height Mesh:勾选后会保存高度信息,同时会消耗一些性能和存储空间。
Unity自动寻路入门指南的更多相关文章
- Unity3D 自动寻路入门指南
所有用于成为NavMesh的网格都必须被指定为 Navigation Static . 方法如下,选中GameObject,然后在菜单栏的[Window]-[Navigation]-[Object]- ...
- 转 猫都能学会的Unity3D Shader入门指南(二)
猫都能学会的Unity3D Shader入门指南(二) 关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己 ...
- Unity3D Shader入门指南(二)
关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己也是Shader初学者,因此可能会存在错误或者疏漏,如果 ...
- 猫都能学会的Unity3D Shader入门指南(二)
关于本系列 这是Unity3D Shader入门指南系列的第二篇,本系列面向的对象是新接触Shader开发的Unity3D使用者,因为我本身自己也是Shader初学者,因此可能会存在错误或者疏漏,如果 ...
- Unity Shader入门教程(三)自制光照模型
光照模型的概念目前还不明晰,因为笔者也是一个初学者,所以请小心对待笔者介绍的内容.笔者认为光照模型是规定光照算法的模型,比如说前面提到的Lambert光照模型,规定了材质表面的光线的表达式为 环境光+ ...
- 2019年Unity学习资源指南[精心整理]
前言 进入一个领域,最直接有效的方法就是,寻找相关综述性文章,首先你需要对你入门的领域有个概括性的了解,这些包括: 1.主流的学习社区与网站. 2.该领域的知名大牛与热心分享的从业者. 3.如何有效的 ...
- Web API 入门指南 - 闲话安全
Web API入门指南有些朋友回复问了些安全方面的问题,安全方面可以写的东西实在太多了,这里尽量围绕着Web API的安全性来展开,介绍一些安全的基本概念,常见安全隐患.相关的防御技巧以及Web AP ...
- Vue.js 入门指南之“前传”(含sublime text 3 配置)
题记:关注Vue.js 很久了,但就是没有动手写过一行代码,今天准备入手,却发现自己比菜鸟还菜,于是四方寻找大牛指点,才终于找到了入门的“入门”,就算是“入门指南”的“前传”吧.此文献给跟我一样“白痴 ...
- yii2实战教程之新手入门指南-简单博客管理系统
作者:白狼 出处:http://www.manks.top/document/easy_blog_manage_system.html 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文 ...
随机推荐
- c/c++ 缓冲区的刷新
利用string 对象查看缓冲区的变化,因为每个string对象在输入时会以空格作为分界. #include<iostream> #include<string> using ...
- android初练二
android 之 Activity的启动方式 1.android的显示启动 显示启动一般用于在用自己的活动时进行页面跳转时常常使用到 public class MainActivity extend ...
- C# extended toolkit propertygrid 隐藏部分属性
该方法是通过更改ShowDetail的状态来实现的隐藏属性 首先在引用里右键 管理NuGet程序包 查找extended wpf toolkit 并安装 然后在MainWindow.xaml添加引用 ...
- React学习笔记-8-属性和状态详解
属性的含义和用法props=properties 英文中属性的意思.属性不可以修改,也就是属性不可以由组件进行修改,组件的属性是由父组件传递过来的,相当于组件在出生的时候带的.用法第一种:直接在调用组 ...
- cookie的存储和获取
在做用户登录时经常会用到cookie,如何将用户名和密码保存至cookie中呢?如何获取cookie中的数据呢? 一.用jquery.cookie.js保存数据 在页面内引入jQuery.cookie ...
- android 蓝牙 http://blog.csdn.net/u012843100/article/details/52384219
http://blog.csdn.net/u012843100/article/details/52384219
- JAVA的模式对话框和非模式对话框
周末的时候,一位网友让我帮他把他的无模式对话框改成有模式对话框. 界面是由swing制作的,都是JFrame,我从来没有接触过swing编程.大致的代码还是看的懂,很多都和C#很相似. 然后就去查资料 ...
- 【转】PHP的Trait 特性
Trait是在PHP5.4中加入的,它既不是接口也不是类.主要是为了解决单继承语言的限制.是PHP多重继承的一种解决方案.例如,需要同时继承两个 Abstract Class, 这将会是件很麻烦的事情 ...
- 同一行多个div宽度自适应布局
主要运用到的是:布局神器display:table-cell 元素两端对齐 第一个案例是让两个元素分别向左和向右对齐,如果是过去,我一定会用float来实现,但其实用table可以这么做: 自动平均划 ...
- Python 创建本地服务器环境生成二维码
一. 需求 公司要做一个H5手机端适配页面,因技术问题所以H5是外包的,每次前端给我们源码,我们把源码传到服务器让其他人访问看是否存在bug,这个不是很麻烦吗?有人说,可以让前端在他们的服务器上先托管 ...