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. 信息时代的…

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

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

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

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

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

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

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

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

【Effective C++】阅读笔记3

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

我在命令行下学日语

同一个动作重复 300 遍&#xff0c;肌肉就会有记忆&#xff0c;重复 600 遍&#xff0c;脊柱就会有记忆&#xff0c;学完五十音图不熟练&#xff0c;经常遗忘或者要好几秒才想得起来一个怎么办&#xff1f;没关系&#xff0c;我做了个命令行下的小游戏 KanaQuiz 来帮助你记忆&a…

c++:vector

一、vector是什么&#xff1f; 1.1 vector的介绍 vector是表示可变大小数组的序列容器。 就像数组一样&#xff0c;vector也采用的连续存储空间来存储元素。也就是意味着可以采用下标对vector的元素进行访问&#xff0c;和数组一样高效。但是又不像数组&#xff0c;它的大小是…

一键切换暗黑模式,这些代码片段你不可错过

文章目录 前言正文1.多主题切换2.使用 SASS 实现轻松深色模式3.动画切换浅色与深色模式4.纯 CSS 主题切换5.GitHub 风格的深色模式切换6.持久深色模式7.基本 Vue 响应式切换8.创意灯泡切换 总结 前言 如今&#xff0c;许多网站设计师都会为用户提供浅色和深色模式的选择。这不…

雷军救WPS“三次”,WPS注入新生力量,不再“抄袭”微软

救WPS“三次” 1989年&#xff0c;求伯君用128万行代码编写出了WPS1.0&#xff0c;宣告了中国自主办公时代的开启。 那时候&#xff0c;雷军还在武汉大学深造&#xff0c;他早就把求伯君当成了自己的榜样&#xff0c;这一来二去的&#xff0c;雷军和WPS之间也就结下了不解之缘…

[MySQL#10] 索引底层(1) | Page | 页目录

目录 1. 初识索引 2. 认识磁盘 3. MySQL与磁盘交互基本单位 4. 索引的理解 1. 重谈Page 2. 为什么IO交互要用Page 3. 有主键的表插入数据时的排序 4. 单个Page与多个Page 4.1 单个Page 4.2 多个Page 目录 单Page目录 多Page目录 在看本文之前&#xff0c;可以回顾…

sklearn 实现随机森林分类器 - python 实现

python sklearn 实现随机森林分类器 from sklearn.ensemble import RandomForestClassifier from sklearn.datasets import load_iris # 加载数据集 irisload_iris() x,yiris.data,iris.target print("x y shape:",x.shape,y.shape) # 创建并训练模型 model Random…

Altium Designer使用技巧(二)

一、创建类 1、按DC键&#xff0c;打开对象类。 2、右键添加一个类。命名为PWR。 3、将所有的电源类&#xff0c;全部添加到新创建的类中&#xff0c;从非成员类中点选到成员类中。 4、右下角点panes ,点PCB。 5、然后在左边单击PWR&#xff0c;点连接&#xff0c;可显示或…

<十六>Ceph mon 运维

Ceph 集群有故障了&#xff0c;你执行的第一个运维命令是什么&#xff1f; 我猜测是ceph -s 。无论执行的第一个命令是什么&#xff0c;都肯定是先检查Mon。 在开始之前我们有必要介绍下Paxos协议&#xff0c;毕竟Mon就是靠它来实现数据唯一性。 一&#xff1a; Paxos 协议 1…