【Unity3D日常开发】Unity3D 自动寻路并且动态显示路线
推荐阅读
在Unity3d中实现点击目标点,然后出现引路线段,动态更新线段等功能
主要用到组件:
NavMeshAgent
参数就不全部说明了,就说几个重要的吧
Steering->Speed
<1>这个是设置自动寻路的速度的,可以把这个值设置成0,然后就会光显示路线,而不自动寻路了。
<2>也可以随便设置一个值,然后就会显示路线,而且还会自动寻路
Steering->Stopping Distance
<1>这个的话就是寻路到目标点之后,距离目标点还有多少的距离,也就是停止距离
<2>如果目标点有碰撞体的话最后把这个值调大一点,不然会一直寻路,往这个方向挤
Path Finding->Area Mask
<1>可以行走的区域,这个再配合
这2个使用。先添加Areas层,然后在Object->Navgation Area->设置Areas层
<2>这个可以运用到dota游戏中,小兵自动3路寻路
LineRenderer组件
这个的话主要是用来在Game视图中画线段
首先要设置一下
LineRenderer->Materials
材质要设置一下,不然会显示材质丢失,就是那个紫色的一团
LineRenderer->Parameters->StartWidth
LineRenderer->Parameters->EndWidth
这两个是设置开始宽度和结束宽度。如果先要让线段粗一点可以设置值大一些
然后上代码
using UnityEngine;
using System.Collections;
public class Nav : MonoBehaviour
{
private NavMeshAgent agent;
public Transform target;
private LineRenderer lineRenderer;
// Use this for initialization
void Start()
{
agent = GetComponent<NavMeshAgent>();
lineRenderer = gameObject.GetComponent<LineRenderer>();
}
// Update is called once per frame
void Update()
{
//设置自动寻路的目标点
agent.SetDestination(target.position);
//储存自动寻路的点的坐标
Vector3[] path = agent.path.corners;
//线段整体y轴加1个单位
for (int i = 0; i < path.Length; i++)
{
path[i] = path[i] + new Vector3(0, 1, 0);
}
//设置定点的数量
lineRenderer.SetVertexCount(path.Length);
for (int i = 0; i < path.Length; i++)
{
//设置线段的路劲
lineRenderer.SetPosition(i, path[i]);
}
}
}
需要现在场景中烘培出来路径,然后在对象上加上NavMeshAgent组件和LineRenderer组件
Agent Type
自动寻路的类型
Base Offset
基本偏移,碰撞几何体相对于实际几何体垂直的偏移
Speed
移动的速度,这个数值越大移动的速度越快
Angular Speed
转角的移动速度
Acceleration
加速度
Stopping Distance
停止的间隔,在离目标点多远的距离停下来的意思
Auto Braking
自动停止
Radius
自动寻路的半径,可以与实际物体半径不一致
Height
自动寻路的高度,可以与实际物体高度不一致
Quality
躲避的等级,等级越高躲避越好,相对于计算量也会大一些
Auto Traverse OffMesh
自动穿过OffMesh
Auto Repath
自动重复
Area Mask
就是当前对象可以通过的网格路径,这个是在Naviagtion中设置
Line Renderer
这个就介绍几个比较重要的属性吧
Materials
这个是设置线段的材质,这个不设置的话就会显示成紫色(就是材质丢失的状态)
Width
就是线段的宽度
Positions
这个就是设置线段的路径的
相关文章
- IDEA 2021 开发 springboot springcloud springcloud Alibaba应用时application.yml配置自动提示
- 基于simulink的AMT自动变速汽车换档智能控制
- Mac 下安装jdk1.7和jdk1.8并实现任意版本自动切换
- golang 自动下载所有依赖包
- Linux 查找特定文件 并移动到特定目录 自动剪切
- 从零开始学android开发-自动产生getter and setter
- shell脚本实现FTP自动上传文件
- SAP MM 公司间STO里交货单PGI之后自动触发内向交货单功能的实现
- 自动回复消息-微信公众平台开发4(asp.net)
- COSFS工具如何开机自动挂载腾讯COS对象存储
- Qt音视频开发36-超时检测和自动重连的设计
- 转 mysql 自动安装部署
- 使用autoscan自动生成makefile文件
- 后端自动验证与错误提示
- QT中|Qt::Tool类型窗口自动退出消息循环问题解决(setQuitOnLastWindowClosed必须设置为false,最后一个窗口不显示的时候,程序会退出消息循环)
- input标签在谷歌浏览器记住密码的自动填充问题
- Chrome浏览器插件开发-淘宝自动登录
- 浅析持续集成/持续部署(CI/CD)及如何使用 jenkins 自动部署
- 【Unity3D日常开发】生成预制体,并且预制体自动销毁
- 【Unity日常开发】创建脚本自动添加头注
- 【Unity3D软硬件】Unity3d与串口通信程序的开发
- unity-AI(自动导航基础)
- [Oracle 工程师手记]如何设置RAC环境自动启动 PDB
- “物联网开发实战”学习笔记-(五)根据土壤湿度、环境温湿度和光照强度自动浇花
- 【玩转数据系列十五】机器学习PAI为你自动写歌词,妈妈再也不用担心我的freestyle了(提供数据、代码)
- IOS开发之Bug--使用xib的自动布局和代码中修改遇到的bug
- 解读dbcp自动重连那些事---转载