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 update
    private void Awake() {
 
    }
    void Start()
    {
        agent = GetComponent<NavMeshAgent>();
        agent.updateRotation = false;
        agent.updateUpAxis = false;
        //agent.updatePosition = false;

    }

    // Update is called once per frame
    void 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

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

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

K8s企业应用之容器化迁移

#作者&#xff1a;曹付江 K8s企业应用之容器化迁移 Kubernetes&#xff08;K8s&#xff09;中的企业应用容器化迁移是一个复杂但重要的过程&#xff0c;平滑的迁移应用&#xff0c;可以让开发、运维、测试人员循序渐进的学习和掌握Kubernetes&#xff0c;通常包括以下步骤&am…

Flash的语音ic型号有哪些?

深圳唯创知音电子有限公司在语音技术领域具有深厚的积累&#xff0c;其Flash语音IC产品凭借高性能和广泛的应用领域&#xff0c;在市场上占据了一席之地。以下是对该公司Flash语音IC产品的详细介绍&#xff1a; 一、产品概述 Flash语音IC是一种采用Flash存储技术的语音芯片&…

vscode摸鱼学习插件开发

不知道大家在摸鱼的时候&#xff0c;会不会想要学习&#xff1f; 或者有没有考公人&#xff0c;下班要学习的&#xff1f; 上班时间摸鱼&#xff0c;下班时间不够学习&#xff1f; 为此&#xff0c;我决定开发一个vscode插件&#xff0c;来刷粉笔题 粉笔插件名称&#xff1a;…

PPT制作新选择:本地部署PPTist结合内网穿透实现实时协作和远程使用

文章目录 前言1. 本地安装PPTist2. PPTist 使用介绍3. 安装Cpolar内网穿透4. 配置公网地址5. 配置固定公网地址 &#x1f4a1; 推荐 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。【点击跳转到网站】 前…

文件上传知识梳理:原理、工具、绕过、利用与防御

文章简介&#xff1a; 本文全面梳理了文件上传相关知识&#xff0c;包括文件上传漏洞的原理及危害&#xff0c;介绍了 Webshell 相关工具&#xff08;如冰蝎、哥斯拉、蚁剑&#xff09;&#xff0c;详细阐述了文件上传绕过检测的多种方法&#xff08;前端检测、服务端检测的各…

SpringMvc参数传递

首先对于post请求汉字乱码需要进行过滤器配置 普通参数传递 直接传递 客户端传递的属性名与我的bean中的函数参数名相同 映射传递RequestParam("XXX") 在我们方法参数中定义一个与客户端属性名一致 并绑定参数 POJO实体类传递 嵌套POJO传递 数组likes参数传递…

sqoop Oracle to hive出现 Error Msg = ORA-00933: SQL 命令未正确结束

原sqoop脚本&#xff1a; sqoop import \ --connect "jdbc:oracle:thin://10.82.88.223:61521/LZY2" \ --username LZSHARE \ --password LZ^share$5105 \ --driver oracle.jdbc.driver.OracleDriver \ --query "SELECT TO_NUMBER(TO_CHAR(GCRQ, YYYY)) AS gcr…

Spring Boot + Vue:打造高效图书借阅管理平台

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

STM32F103C8T6学习笔记1--新建工程模板

1、简介 STM32是一系列由STMicroelectronics&#xff08;瑞士意法半导体&#xff09;公司设计和生产的32位微控制器产品线。这些微控制器基于ARM Cortex-M内核&#xff0c;并具有高性能、低功耗和多种外设接口的特点。STM32处理器被广泛应用于各种嵌入式系统领域&#xff0c;包…

Java日志脱敏(二)——fastjson Filter + 注解 + 工具类实现

背景简介 日志脱敏 是常见的安全需求&#xff0c;最近公司也需要将这一块内容进行推进。看了一圈网上的案例&#xff0c;很少有既轻量又好用的轮子可以让我直接使用。我一直是反对过度设计的&#xff0c;而同样我认为轮子就应该是可以让人拿去直接用的。所以我准备分享两篇博客…

篡改猴 (Tampermonkey) 安装与使用

一、下载篡改猴 (Tampermonkey) 步骤1---官网&#xff1a;篡改猴 - Microsoft Edge Addons

无人机之感知避让技术篇

无人机的感知避让技术是无人机安全飞行的重要保障&#xff0c;它依赖于多种传感器和算法来实现对周围环境的感知和判断。 一、主要技术类型 视觉避障 原理&#xff1a;通过安装在无人机上的摄像头捕捉周围环境的图像&#xff0c;利用计算机视觉技术对图像进行处理和分析&…

动态规划路径问题(不同路径 不同路径2 珠宝的最大价值 下降路径最小和 最小路径和)

本期题型&#xff1a; 1. 不同路径. - 力扣&#xff08;LeetCode&#xff09; 2. 不同路径2. - 力扣&#xff08;LeetCode&#xff09; 3. 珠宝的最大价值 . - 力扣&#xff08;LeetCode&#xff09; 4. 下降路径最小和. - 力扣&#xff08;LeetCode&#xff09; …

ARM base instruction -- bfxil

Bitfield Extract and Insert Low copies a bitfield of <width> bits starting from bit position <lsb> in the source register to the least significant bits of the destination register, leaving the other destination bits unchanged. 位域提取并插入低位…

1.探索WebSocket:实时网络的心跳!

序言 你可能听说过"WebSokcet"这个词&#xff0c;感觉它好像很高深&#xff0c;但其实它是一个超级酷的小工具&#xff0c;让我们在Web应用里实现实时通信。想象一下&#xff0c;你可以像聊天一样&#xff0c;在浏览器和服务器之间来回“畅聊“&#xff0c;没有延迟…

springboot 修复 Spring Framework 特定条件下目录遍历漏洞(CVE-2024-38819)

刚解决Spring Framework 特定条件下目录遍历漏洞&#xff08;CVE-2024-38816&#xff09;没几天&#xff0c;又来一个新的&#xff0c;真是哭笑不得啊。 springboot 修复 Spring Framework 特定条件下目录遍历漏洞&#xff08;CVE-2024-38816&#xff09;https://blog.csdn.ne…

嵌入式硬件电子电路设计(二)开关电源BOOST升压电路

目录 升压电路原理 BOOST电路基本结构 BOOST电路工作过程分析 1. 开关导通阶段 2. 开关关断阶段 3. 稳定输出电压 BOOST电路工作的实际调研分析 1. 非同步BOOST电路 2. 同步BOOST电路 XL6009电路分析 SX1308电路分析 引言&#xff1a;前面已经讲述了Buck电路&#…

如何安装和使用PowerDesigner

教程目录 一、安装二、使用 一、安装 1、启动安装程序。 2、Trial&#xff0c;然后Next。 3、选PRC&#xff0c;同意协议&#xff0c;Next。 4、设置安装路径&#xff0c;Next。 5、Next。 6、全选&#xff0c;Next。 7、Next。 8、Next。 9、等待安装。 10、…

SQL进阶技巧:巧用异或运算解决经典换座位问题

目录 0 问题描述 1 数据准备 2 问题分析 2.1 什么是异或 2.2异或有什么特性? 2.3 异或应用 2.4 本问题采用异或SQL解决方案 3 小结 0 问题描述 表 seat中有2个字段id和student id 是该表的主键(唯一值)列,student表示学生姓名。 该表的每一行都表示学生的姓名和 ID。…

PAT甲级-1074 Reversing Linked List

题目 题目大意 给一个链表的头结点和总节点个数&#xff0c;以及k。每k个节点的链表都要翻转。 思路 链表可以用一个结构体数组来存储&#xff0c;先遍历一遍&#xff0c;过滤掉不在链表中的节点。然后将过滤好的节点放入res数组中&#xff0c;每k个元素用一次reverse()&…