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.pswp.cn/news/37718.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/37718.shtml
英文地址,請注明出處:http://en.pswp.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…