NavMeshPlus 2D寻路插件

插件地址:h8man/NavMeshPlus: Unity NavMesh 2D Pathfinding (github.com)

我对Unity官方是深恶痛觉,一个2D寻路至今都没想解决,这破引擎早点倒闭算了.

这插件是githun的开源项目,我本身是有写jps寻路的,但是无法解决多个单位互相阻挡的问题(可以解决但是有性能问题).

1.导入插件

 

2.建立"NavMesh"空物体,添加Navigation Surface,Navigation CollectSources2d组件,点击"Rotate Surface to XY",切换到面向摄像机

 

3.在TileMap的碰撞层加入NavMeshModifier组件,勾选OverrideArea,选择NotWalkable.这代表是不可行走.

4.在TileMap的地面层,加入NavMeshModifier组件,勾选OverrideArea,选择Walkable.这代表是可行走.(和上面差别就是选择不同)

 

5.在NavMesh物体,选择Navigation Surface,根据需求调整Layers层级,UseGeometry,有根据 图片渲染,和根据Colliders渲染,根据自己需求调整,我的TileMap碰撞有修改,所有选择物理碰撞生成,点击"Bake"烘培行走路径.

烘培以后地图是这个样子

 

 

 6.新建一个单位,添加Nav Mesh Agent组件.然后新建一个脚本挂载上.

    public NavMeshAgent navMeshAgent;private void Start(){navMeshAgent.updateUpAxis = false;navMeshAgent.updateRotation = false;navMeshAgent.SetDestination(new Vector3(5, 5));}

以上脚本是锁住旋转和Z轴,然后给定目标点.

如果需要持续追踪目标点,可以使用目标单位的Tansfrom的坐标位置传入

其他问题:

运行时烘焙

通常游戏具有程序化的世界构建,需要在运行时烘焙 NavMesh。要实现此目的,您需要在组件中调用单个方法,以便在运行时以 Unity 异步方式烘焙 NavMesh。可以在方法上调用此方法。BuildNavMeshAsyncNavigationSurfaceStart()

	public NavMeshSurface Surface2D;void Start(){Surface2D.BuildNavMeshAsync();}

已知问题

代理在 Y 轴上移动或设置代理时卡住。如果 x=0_,Velocity 不会做任何事情 - 这似乎是 NavMeshAgent 组件中的一个错误。目前没有可用的修复程序,但有解决方法。解决方法的想法很简单,调整 X 上的代理移动,使其永远不会直线上升。 导航网格可以有一个小的倾斜89.98,以使代理工作。 如果由于某种原因它不能解决问题,则需要添加漂移。

   satic float agentDrift = 0.0001f; // minimalvoid SetDestination(GameObject target){   if(Mathf.abs(transform.position.x - target.transform.position.x) < agentDrift)var driftPos = target.transform.position + new Vector3(agentDrift, 0f, 0f);agent.SetDestination(driftPos);}

这是官方给出来的解决办法..

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

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

相关文章

vue3+ts使用antv/x6 + 自定义节点

使用 2.x 版本 x6.antv 新官网: 安装 npm install antv/x6 //"antv/x6": "^2.1.6",项目结构 1、初始化画布 index.vue <template><div id"container"></div> </template><script setup langts> import { onM…

Python爬虫——scrapy_基本使用

安装scrapy pip install scrapy创建scrapy项目&#xff0c;需要在终端里创建 注意&#xff1a;项目的名字开头不能是数字&#xff0c;也不能包含中文 scrapy startproject 项目名称 示例&#xff1a; scrapy startproject scra_baidu_36创建好后的文件 3. 创建爬虫文件&…

MySQL表的操作

文章目录 MySQL表的操作1. 创建表2. 查看表2.1 查看数据库中存在的表2.2 查看表的属性2.3 查看创建时表的详细信息 3. 修改表3.1 向表中添加记录3.2 添加列3.3 修改列的数据类型3.4 删除列3.5 表的重命名3.6 修改列名 4. 删除表 MySQL表的操作 1. 创建表 CREATE TABLE table_…

博客系统【架构】

用户管理 实现用户的注册、登录、注销等功能 使用Redis做缓存处理、阿里云短信服务 确保用户身份验证和安全性 使用Jwt来鉴权 userId (主键&#xff0c;自增长) username (唯一&#xff0c;用户名)【用于普通登录】email (唯一&#xff0c;用户的电子邮件地址) password (存储…

zabbix监控tomcat

一、zabbix监控Tomcat1.1 zbx-agent配置1.1.1 关闭防火墙&#xff0c;将安装 Tomcat 所需软件包传到/opt目录下1.1.2 安装JDK1.1.3 设置JDK环境变量1.1.4 安装启动Tomcat1.1.5 配置 JMX 1.2 zbx-server配置1.2.1 安装zabbix&#xff08;省略&#xff0c;可看上一篇博客&#xf…

Docker自动化部署安装(十)之安装SonarQube

这里选择的是&#xff1a; sonarqube:9.1.0-community (推荐使用) postgres:9.6.23 数据库(sonarqube7.9及以后便不再支持mysql&#xff0c;版本太低的话里面的一些插件会下载不成功的) 1、docker-sonarqube.yml文件 version: 3 services:sonarqube:container_name: sonar…

Redis详解

Redis 简介 Redis&#xff08;Remote Dictionary Server&#xff09;是一个开源的高性能键值对存储数据库&#xff0c;最初由 Salvatore Sanfilippo 开发&#xff0c;它在内存中存储数据&#xff0c;并提供了持久化功能&#xff0c;可以将数据保存到磁盘中&#xff0c;是一种N…

♥ vue中$forceUpdate()

♥ vue中$forceUpdate() 1、认识 强制该组件重新渲染 鉴于 Vue 的全自动响应性系统&#xff0c;这个功能应该很少会被用到 $forceUpdate()迫使vue实例重新&#xff08;rander&#xff09;渲染虚拟DOM&#xff0c;注意并不是重新加载组件。 结合vue的生命周期&#xff0c;调用…

【论文阅读】DEPCOMM:用于攻击调查的系统审核日志的图摘要(SP-2022)

Xu Z, Fang P, Liu C, et al. Depcomm: Graph summarization on system audit logs for attack investigation[C]//2022 IEEE Symposium on Security and Privacy (SP). IEEE, 2022: 540-557. 1 摘要 ​ 提出了 DEPCOMM&#xff0c;这是一种图摘要方法&#xff0c;通过将大图划…

简单易懂的python生成器

目录 定义使用 for 循环来迭代生成器对象斐波那契 定义 在 Python 中&#xff0c;使用了 yield 的函数被称为生成器&#xff08;generator&#xff09;。Python 中的生成器&#xff08;Generator&#xff09;是一种特殊的迭代器&#xff0c;可以通过函数来创建。与常规函数不同…

Feign忽略Https的SSL最佳方案(且保证负载均衡将失效)

同时解决Https的SSL证书验证问题和feign不支持Patch请求方法的问题 代码 1. 工具类 OkHttpUtils.java import javax.net.ssl.*; import java.security.KeyManagementException; import java.security.NoSuchAlgorithmException; import java.security.SecureRandom; import j…

从0开始搭建ns3环境以及NetAnim简单使用

一、环境准备 ns3是基于GNU/Linux平台使用C开发的工具软件&#xff0c;在windows系统中安装使用ns3环境&#xff0c;可以使用虚拟机VMware并安装ubuntu系统来实现&#xff0c;现将本教程所用到的虚拟机和系统镜像放到网盘提供下载 名称链接提取码VMware Workstation 17 Proht…

简约时尚的健康手表,智能守护每一刻,dido Y60上手

智能手表是现在很流行的一种智能设备&#xff0c;很多品牌都推出了各种各样的产品&#xff0c;但是大部分都更侧重功能和运动的方面&#xff0c;健康监测往往只是配角&#xff0c;而随着人们对自己的健康越来越重视&#xff0c;有些朋友只是单纯的需要一块专业的健康监测手表。…

选择任务管理软件:哪个更适合你的需求?

随着互联网的发展&#xff0c;知识管理是可以成为企业获得更大发展前景的神兵利器&#xff0c;任务协同&#xff0c;是服务于中小型团队&#xff0c;或者大型机构的终端组织。来看看这款国外流行的任务管理软件Zoho Projects。 任务管理是企业协同的重要组成部分。 任务管理是企…

Bitcoin 加速交易操作示例

这里以 Bitcoin Ordinals NFT 为例&#xff0c; 进行加速交易演示 第1步&#xff1a;新建子账户 温馨提示&#xff1a;如果有多条鱼未确认&#xff0c;也只需1个账户即可&#xff0c;不必搞多个子账户 第2步&#xff1a;切换回到老地址&#xff08;Account 1&#xff09; 第3步…

【Kubernetes】Kubernetes的PV和PVC的用法

PV、PVC 前言一、 存储卷1. emptyDir 存储卷1.1 概念1.2 实例 2. hostPath 存储卷2.1 概念2.2 实例 3. nfs共享存储卷 二、PV 和 PVC1. 概念1.1 PV1.2 PVC1.3 PVC 的使用逻辑1.4 创建机制1.5 PV 和 PVC 的生命力周期1.6 创建及销毁 PV 的流程 2. PV 和 PVC 的创建2.1 查看定义2…

高并发内存池项目(C++实战项目)

项目介绍 项目来源 本项目实现了一个高并发内存池&#xff0c;参考了Google的开源项目tcmalloc实现的简易版&#xff1b;其功能就是实现高效的多线程内存管理。由功能可知&#xff0c;高并发指的是高效的多线程&#xff0c;而内存池则是实现内存管理的。 tcmalloc源码 项目…

论智能与反智能的对立统一

智能和反智能可以被视为一个相对的概念&#xff0c;彼此存在一定的关联和互补。在发展智能和反智能技术的过程中&#xff0c;我们必须始终牢记伦理和法律的原则&#xff0c;在合法和道德的框架内进行研究和应用&#xff0c;遵守相关的规定和限制。只有在这样的前提下&#xff0…

linux的shell中 if 的运算符的使用

一、文件比较运算符 e filename 如果 filename存在&#xff0c;则为真 如&#xff1a; [ -e /var/log/syslog ]-d filename 如果 filename为目录&#xff0c;则为真 如&#xff1a; [ -d /tmp/mydir ]-f filename 如果 filename为常规文件&#xff0c;则为真 如&#xff1a; […

基于vue开发的影视站模板(模仿西瓜视频)

基于vue3开发的影视站模板, 对接苹果cms10数据库表, 采用pythondjangovue开发 效果预览 http://101.43.124.118:8002 源码地址 https://github.com/geeeeeeeek/appvideo 运行步骤 1.安装依赖 npm install 2.运行 npm run dev 代码说明 入口文件为main.js 接口请求的bas…