首頁 資訊 Unity中的自動尋路方法

Unity中的自動尋路方法

來源:泰然健康網 時間:2025年07月09日 13:49

在游戲制作中,我們經常會用到角色自動尋路這個功能,點擊小地圖或者場景中的某一處時,角色會自動走向目的地,并且自動避開期間的障礙物。而在Unity中,有多種方法能夠實現(xiàn)尋路的功能,下面就給大家介紹下這幾種方法。

(一)簡單尋路

首先選擇需要行走的路塊進行烘焙,(點擊最上方的Windows 下拉菜單的 Navigation )出現(xiàn)以下界面。

選中需要烘焙的路面以及物體,打上紅勾,可以行走的區(qū)域選擇Walkable,不可行走的選擇Not Walkable。

選擇完成后,點擊右下角的Bake,即可烘焙完成。

烘焙完成也就完成了我們的第一步了。

在需要尋路的人物上,加上自動尋路Nav Mesh Agent組件,接下來再寫個簡單的小腳本,就可以讓我們的人物動起來啦。

public NavMeshAgent Nav_Npc; <span style="color:#009900;">//NPC人物 </span> public Transform Tra_Target; <span style="color:#009900;">//目標點 </span> private void Update() { <span style="color:#009900;"> //點擊鼠標,使NPC到達鼠標點擊位置 </span> RaycastHit hit; if (Input.GetMouseButtonDown(0)) { Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition); if (Physics.Raycast(ray, out hit)) { //SetDestination()函數(shù):設置或者更新目的地并計算新的行走路徑。 Nav_Npc.SetDestination(hit.point); } } }

(二)使用Off Mesh Link 連接組件,做一個跳板,使NPC可以經過跳板AB,來到達目標點。

下面就說一下方法吧,中途遇到個小Bug,搞了好幾次終于搞定了。

步驟同(一)。不同的是我們需要在A或B上加一個Off Mesh Link 連接組件,然后將A、B起始點拖拽如組件中即可。然后我們再把需要走的地方烘焙一下,(A、B、地方、大方塊)。

注:遇到的Bug:A、B方塊不能太大?。?!不然就導致我們的小人跳不上去啦。(這個Bug很詭異發(fā)火)

(三)選擇路段行走

使A、B各沿著自己的路線行走。

其實也很簡單,下面來解說一下。

還是在Navigation界面,選擇Areas給紅藍兩條路添加自定義標簽,

然后返回Obj界面,選擇紅色道路對應標簽(以紅色為例)

然后選擇紅色小人,更改組件中的Area Mask,可以走哪條線路,就勾那個。接下來烘焙一下,就可以運行來,會發(fā)現(xiàn)紅色只走紅色道路到達對面。

(四)障礙物組件

NavMeshObstacle 導航網格障礙

導航網格躲避的障礙。

下面圣典的解釋,再添加一些自己的話,使其比較容易理解。

障礙僅影響代理的躲避行為而不是尋路。這意味著當測繪路徑時代理將會忽略該障礙,但是沿著路徑移動時代理將會在障礙的附近回避。

如果啟用carving,因此測繪路徑時將會避免該障礙。(可以理解為沒有烘焙此障礙物,不能通過?!緦嶋H事實是烘焙過的】)這意味著如果說障礙阻塞缺口,尋路將會尋找一個替代路線給目標。(也就是繞行)。

沒有啟用carving,障礙將會在導航網格上創(chuàng)建一個臨時的“門”(路徑是已被烘焙過的,但門是關著的)。該缺口(門)將會被尋路認可,代理將會朝缺口前進但是不可能通過缺口直到該障礙被清除。 (設置enable = flase,即障礙物清除)

相關知識

unity接入防沉迷
Unity 5.6 新功能:360度全景視頻
騰訊與Unity推防沉迷工具,申請版號有保障?
魔獸世界自動尋路功能怎么開啟 設置方法是什么
引擎級防沉迷!Unity攜手騰訊游戲推出防沉迷系統(tǒng)開發(fā)工具
自動尋路的手游最新大全
不走尋常路——燃燒卡路里的6種非常規(guī)方法
探尋個性化運動之路:如何精準解鎖你的專屬‘運動處方’
追尋健康幸福之路!
中年職業(yè)女性:在困境中尋找出路

網址: Unity中的自動尋路方法 http://m.u1s5d6.cn/newsview1528267.html

推薦資訊