Unity 2D寻路导航 NavMeshPlus解决方案

         插件的github主页    h8man/NavMeshPlus: Unity NavMesh 2D Pathfinding

          这个插件是基于新版3D寻路导航制作的,所以你可能需要看一下这篇文章

         新旧Navmash 寻路导航组件对比 附使用案例与实用教程链接-CSDN博客

这行代码agent.updateUpAxis = false 一定要为代理单位加上,重要的事情说三遍!

这行代码agent.updateUpAxis = false 一定要为代理单位加上,重要的事情说三遍!

这行代码agent.updateUpAxis = false 一定要为代理单位加上,重要的事情说三遍!

至于不加会发生什么,你可以试试看 

7d49412f2d804e2d9151ff5c6f7573e8.gif

0.导入插件和基础说明

        该插件只适合用于2D俯视角游戏,类银河恶魔城 或者 横板跳跃游戏 都不建议sh'y该插件,因为比较 大材小用,而且比传统的纯代码要消耗性能

1.前置准备

最好是给一个空物体 挂载 如图两个脚本

350c98bb2655487bbb4a4449d1a55014.png

其作用分别为:

38e1321c3a6d4bc79826b90499a429de.png

你必须知道下面的操作,不然可能会出现奇怪的问题

1.在下图中你可以选择地形是基于什么烘焙

d14d6ae941b548e68f1f7547df917145.png

2.使surface面向 xy也是必须要点的,不然你的烘焙表面会竖起来

ecafb1fd668e48a7a393afa17b8e3c86.png

2.导航地形种类组件 

1fdfd149c2e7419d95e962e61f8ee4e7.png

72dd62da336a4450bc177023febae999.png

        如图,该组件需要挂载到你需要的烘焙的地形上,该地形可以是tilemap,也可以是挂载了碰撞器(勾选触发器)的sprite精灵图片,并且可以根据其碰撞器形状选择烘焙的边缘

f5585f0717a941e3ae3ea42a771fc2d6.png

        添加好了就回到Surface组件点击一下Bake

        如果没有任何事情发生

        1.可以看看地形的组件是否对应Use Geometry的type

        2.点击Override Area选择对应的Area种类再试试

        3.试试导入3D的寻路导航组件后重新Bake

3.寻路单位

实际上该插件做的就是把导航代理做成了面向XY轴的样子

119d5116184d4d28b8139ee3a9cd94fd.png

你需要给寻路的单位挂载一个代理组件,就是3D的代理组件,因为该插件是依托于3D的嘛

4edef4be32ca4c578f48894f0094d725.png

编写可能用到的脚本,该插件有一个BUG就是当寻路单位与目标点在同一竖线的时候

目标点垂直运动不会引起寻路单位的追踪,所以需要一个小小的偏移量触发寻路单位的运动

就是脚本中的Destination方法

另外: agent.updateUpAxis = false;必须要这句代码,不然你的寻路单位也会竖起来

public class ai : MonoBehaviour
{NavMeshAgent agent;public Transform target;// Start is called before the first frame updateprivate void Awake() {}void Start(){agent = GetComponent<NavMeshAgent>();agent.updateRotation = false;agent.updateUpAxis = false;//agent.updatePosition = false;}// Update is called once per framevoid Update(){//agent.SetDestination(target.position);Destination(target.position);}/// <summary>/// 解决同一条直线不追踪的bug/// </summary>/// <param name="pos">target</param>void Destination(Vector3 pos){float offset = 0.01f;Vector3 agentPos =(Vector3)(offset*Random.insideUnitCircle) + pos;agent.SetDestination(agentPos);}
}

4.不要试图将烘焙表面和代理单位分离

如图所示,烘焙表面就是一张纸片,当你代理单位的框框离开了该烘焙表面就会报错

f45e7762a334400dbab1f1deb06d5c0f.png

最后 该插件确实非常简单,所以更多内容可以自行摸索

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/58961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

客户端与微服务之间的桥梁---网关

当我们创建好了N多个微服务或者微服务的实例之后&#xff0c;每个服务暴露出不同的端口地址&#xff0c;一般对于客户端请求&#xff0c;只需要请求一个端口&#xff0c;要隔离客户端和微服务的直接关系&#xff0c;保证微服务的安全性和灵活性&#xff0c;避免敏感信息的泄露。…

@Excel若依导出异常/解决BusinessBaseEntity里面的字段不支持导出

今天发现所有实体类继承BusinessBaseEntity里面的这些通用字段不支持导出&#xff0c;debug时发现是这样&#xff1a; 导出效果 这里我把能查到的方法都汇总了&#xff0c;如果你也遇到这个异常&#xff0c;可以去逐步排查 1.先看库里有没有数据 2.看字段名是否对齐 3.所需要…

Flink系列之:学习理解通过状态快照实现容错

Flink系列之&#xff1a;学习理解通过状态快照实现容错 状态后端检查点存储状态快照状态快照如何工作&#xff1f;确保精确一次&#xff08;exactly once&#xff09;端到端精确一次 状态后端 由 Flink 管理的 keyed state 是一种分片的键/值存储&#xff0c;每个 keyed state…

大数据之文件服务器方案

大数据文件服务器方案 一&#xff0c;文件服务器常用框架 二&#xff0c;文件服务器常用框架的实现技术 文件服务器常用框架 文件服务器是一种专门用于存储、管理和共享文件的服务器&#xff0c;其常用框架的实现技术涉及多个方面&#xff0c;以下是一些主要的实现技术及其详…

车载总线系列 --- CAN FD简介

我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 所有人的看法和评价都是暂时的,只有自己的经历是伴随一生的,几乎所有的担忧和畏惧,都是来源于自己的想象,只有你真的去做了,才会发现有多快乐。…

Oracle与SQL Server的语法区别

1&#xff09;日期和日期转换函数。 SQL: SELECT A.*, CASE WHEN NVL(PAA009,) OR PAA009 >Convert(Varchar(10), SYSDATE,120) THEN Y ELSE N END AS ActiveUser FROM POWPAA A WHERE PAA001admin or PAA002admin Oracle: SELECT A.*, CASE WHEN NVL(PAA009,) or PAA009&…

在培训班学网络安全有用吗

在当今数字化时代&#xff0c;网络安全问题日益凸显&#xff0c;成为了企业和个人关注的焦点。随着对网络安全人才需求的不断增长&#xff0c;各种网络安全培训班也如雨后春笋般涌现。然而&#xff0c;在培训班学网络安全真的有用吗? 一、网络安全的重要性与挑战 1. 信息时代的…

leaflet 地图基础应用篇

文章目录 leaflet 基础应用一、基础介绍二、功能总结1. 地图加载2. 打点3. 图层控制4. 绘制5. 聚合6. 特效实例应用1. 加载多个不同来源的地图图层并切换2. 加载自定义瓦片地图&#xff08;本地瓦片或私有瓦片服务器&#xff09;3. 加载有不同缩放级别限制的地图图层 图层加载控…

【前端】在Next.js中cors 库的使用及限制跨域请求的速度

cors 库是一个用于方便地启用跨域资源共享&#xff08;CORS&#xff09;的 Node.js 中间件。在 Next.js 中&#xff0c;你可以利用这个库来处理来自不同源的请求。下面是详细的步骤说明&#xff0c;展示如何在 Next.js 中使用 cors 库。 安装 cors 首先&#xff0c;你需要安装…

躺平成长-下一个更新的数据(躺平成长数据显示核心)

旭日图&#xff08;Sunburst Chart&#xff09;是一种用于展示具有层次结构数据的可视化图表。 它起源于饼图和环形图&#xff0c;并随着数据可视化需求的发展而演变。 旭日图通过将层次结构数据以由内向外的同心圆环形式展示&#xff0c;使数据的层次关系更加清晰直观。 以下…

【C++、数据结构】哈希表——散列表(一)(概念/总结)

「前言」 &#x1f308;个人主页&#xff1a; 代码探秘者 &#x1f308;C语言专栏&#xff1a;C语言 &#x1f308;C专栏&#xff1a; C / STL使用以及模拟实现 &#x1f308;数据结构专栏&#xff1a; 数据结构 / 十大排序算法 &#x1f308;Linux专栏&#xff1a; Linux系统编…

OpenCV图像预处理1

目录 图像翻转 图像仿射变换 仿射变换函数 图像旋转 图像平移 图像缩放 图像倾斜 图像色彩空间转换 RGB 转 Gray RGB 转 HSV 图像二值化处理 图像掩模 图像位与操作 图像检测轮廓 绘制轮廓 图像翻转 cv2.flip(src, flipCode[, dst]) -> dst 用于翻转图像。翻…

金融量化交易模型的探索与发展

在当代金融市场中&#xff0c;量化交易模型的应用不断提升&#xff0c;逐渐成为大数据与人工智能等前沿技术的集大成者。量化交易借助数学模型和算法分析市场信息&#xff0c;自动执行交易决策&#xff0c;具备精确、效率高等特点&#xff0c;且能够在复杂多变的市场中有效应对…

求逻辑地址的页号和物理地址

逻辑地址空间按字编址 -->逻辑地址长度为&#xff1a;log2(逻辑地址空间&#xff09; 页的大小 --> 页内偏移量占log(页的大小) 逻辑页号页内偏移量逻辑地址长度 因此假如一个逻辑地址空间为64kb,页的大小为1kb&#xff0c;逻辑地址为17CAH&#xff0c;求逻辑地址页号…

ETLCloud怎么样?深度解析其在数据管理中的表现

在BI或数据大屏等数据分析工具中&#xff0c;经常需要从多个业务系统中提取原始数据&#xff0c;然后对数据进行清洗、处理&#xff0c;以获取高质量、有效且干净的数据以供后续的BI进行数据统计和分析使用&#xff0c;从高质量的实现企业数据的价值变现。 然而&#xff0c;在…

Windows SEH异常处理讨论

Windows C程序异常的类型 在Windows C异常的场景中&#xff0c;我们需要理解以下两种类型的异常&#xff1a; C语言抛出的异常。 这是利用C throw抛出的exception&#xff0c;利用C try-catch即可捕获。即便是来自于另一个DLL的C exception&#xff0c;仍然能利用C try-catch…

Windows 基础(一):深入理解Windows,掌握命令行与Shell

内容预览 ≧∀≦ゞ Windows 基础&#xff08;一&#xff09;声明导语一、Windows 和 Linux 的区别二、Windows 的ShellShell 和 终端 的区别1. 命令提示符&#xff08;CMD&#xff09;2. Windows PowerShell3. Windows Terminal4. Windows Subsystem for Linux (WSL) 三、Windo…

【数据库系统概论】第3章 关系数据库标准语言SQL(一)数据查询(超详细)

目录 一、单表查询 1. 简单的数据查询 &#xff08;1&#xff09;选择表中若干列 &#xff08;2&#xff09;选择表中若干行&#xff08;元祖&#xff09; 2. 聚合函数与分组查询 聚集函数 GROUP BY分组查询 二、联接查询 1、连接概述 2. 内联接&#xff08;INNER JO…

unity后端kbengine用DOTween让 移动同步丝滑

unity在网络同步kbengine框架,同步移动时, 看自己很丝滑,但看他人是在跳越移动,一闪一闪,像掉帧, 看什么插值,高频同步,都不实用 用DOTween的 transform.DOMove(目标位置, 时间); //顺滑移动动画 这段代码不是放在Avatar.cs,放在AvatarView.cs里 if (Avatar.isPlayer() false…

【Effective C++】阅读笔记3

1. 成员变量声明为Private 建议将成员变量声明为Private&#xff0c;然后再public中提供调用该数据的接口 设置成Private的原因分析 类内成员变量被声明为Private&#xff0c;那么就可以外部代码直接访问或者修改内部数据通过公共接口获取内部数据&#xff0c;这样可以减少对外…