獨立開發者博客:如何用Unity做遊戲中的尋路導航

2021-02-26 GameLook

(點擊上方↑↑↑↑↑↑「GameLook」,訂閱微信)

隨著手遊市場的興起和對獨立開發者的支持,Unity如今已經成為業內開發者用戶最多的引擎,最近,一名海外開發者在博客中分享了自己用Unity引擎重做此前研發的Flash遊戲尋路導航的心得,希望可以給大家帶來幫助:

大家好,最近我一直都在忙於把2006年的一款Flash遊戲用Unity引擎重做出來,儘管我們在《Arrival in Hell》這個項目已經工作了一年多,但這裡我希望從頭開始來寫開發者博客,因為這樣才能讓讀者們有比較完整的印象。

如果你們不太熟悉這款遊戲的話,我這裡做幾句話的介紹,我們在對2006年我和朋友Eduardo Mojica以及Richard Rout三人研發的一款Flash遊戲進行重做,這是一款點擊式操作的冒險遊戲,我們將用Unity引擎進行重做。我做編程和研發遊戲已經有十年左右的經驗,但這是我使用Unity引擎做的首款遊戲。

在其他事情之前,我首先想要說的就是玩家角色的移動,由於這款遊戲現在是真正的3D,因此玩家角色需要在3D空間裡尋路。幸運的是,Unity引擎已經有了一些不錯的內置尋路功能,你只要打開窗口-導航(Navigation),選擇你想要使用的物體並且放到路徑中,然後把他們標記為『導航靜態(Navigation static)』這就會告訴Unity這些物體是靜態的(非移動),在尋路的時候應該被考慮進去。

把物體設置為『導航靜態』

這裡我想要說一說這個功能有多麼強大。過去,我和大多數的遊戲開發者一樣,都必須打造自己的尋路系統,我之前就做過一個A*tile和基於節點的尋路系統,在兩種情況下,特別是基於節點系統的尋路所產生的walls讓人非常頭痛。在基於節點的尋路系統中,你必須手動地把AI使用的點在兩者之間進行導航。Unity不僅做導航功能,還使用了導航網格(Navigation meshes),這比手動放置節點更有效率而且更流暢。更重要的是,你還可以一鍵重新計算整個導航網格,徹底擺脫了手動修改導航節點的做法。

我用基於節點系統做的失敗的尋路系統之一

在把靜態物體加入了導航網格之後,你可以選擇一系列的設定然後點擊bake按鈕,比如在考慮加入一堵牆之前確定坡有多陡以及臺階應該多高。這樣你就可以獲得可以預覽的視圖。值得注意的一件事是,不要僅僅因為物體存在在場景中就意味著它是導航網格的一部分。比如說在這款遊戲中,我不在乎玩家們是否會踩到瓦礫,所以我並沒有把任何瓦礫標識為導航靜態,這加快了當行網格的生成速度。

《Arrival in Hell》中其實是有數值的

在導航網格生成之後,我簡單地給玩家模型增加了一個NavMeshAgent組件,這款遊戲現在就可以進行尋路了,唯一剩下的就是增加滑鼠輸入控制NavMeshAgent的目的地。

用NavMesh做的bake

NavMeshAgent設定

為了告訴NavMeshAgent導航我做了以下指令:

1.注意聽取滑鼠輸入

2.把滑鼠放進屏幕空間

3.把屏幕空間轉變成來自攝像頭的一束光

4.在光達到地面的時候把它移除

5.把NavMeshAgent的目的地設定到地板的對應位置。

C#代碼是這樣的:

點擊設置NavMeshAgent的目的地

可視化視圖下的目的地與路徑

這就解決了我這款遊戲的大多數導航需求,唯一的例外就是導航網格由於遊戲內的一些活動而發生改變的時候。比如第一個房間的們最開始是關閉的,後來當它打開的時候,當行網格需要更新反映此次變化,允許玩家從新開的們中走過去。我並沒有在遊戲運行的時候rebake完整的靜態導航網格,而是使用了NavMeshObstacle組件,該組件可以讓你把尋路過程中的動態物體加進去,如果物體移動,Unity的尋路算法就會根據實際情況而更新。

導航路徑會根據NavMeshObstacle的變化而自動發生改變

可視化視圖

所以,遊戲尋路導航就這麼做好了,這就是《Arrival in Hell》遊戲中的導航工作原理,這一些只需要Unity內自帶的導航功能就可以完成了。

相關焦點

  • Indie Dream:在獨立遊戲中做獨立遊戲
    這裡是官方介紹: 關於這款遊戲 「在獨立遊戲中做獨立遊戲」 簡介 這只是一個天真的遊戲開發人的故事。
  • 首周收入百萬、92%好評:[Furi]開發者談如何做脫穎而出的獨立遊戲
    該遊戲由兩名獨立開發者組成的法國小團隊The Game Bakers研發,兩名創始人自2011年開始創作手遊在主機、PC和手遊平臺推出過《Furi》、《Combo Crew》和《Squids》等遊戲。毫無疑問的是,《Furi》之所以成功是因為它的獨特玩法和美術風格,最近,The Game Bakers的創意總監和共同創始人Emeric Thoa在博客中講述了該遊戲創作背後的一些秘密,他表示,『做一個不取悅所有人的遊戲』是脫穎而出的關鍵,作為遊戲設計師,一直堅持自己的觀點是很難做到的,以下請看gamelook編譯的內容:《Furi》是一個面向主機與PC平臺的角色動作遊戲
  • 獨立遊戲開發者入門指南
    這樣的答案可能沒什麼用。所以我專門寫了以下的內容,希望能幫助那些想做遊戲但是還在門口猶豫的朋友。什麼是獨立遊戲?獨立遊戲是什麼?為什麼人們要使用獨立遊戲這個詞?為了回答這個問題,我設計了幾個場景。場景1:有個人想開發遊戲,還想建立自己的工作室。
  • 任天堂官方:獨立開發者如何開發、發售Switch遊戲
    在今年CIGA開發者大會上,任天堂株式會社業務部戰略組獨立遊戲小組的副島佑介與楊凱淳,帶來一場 「在NintendoSwitch上開發遊戲: 讓世界認識你!」的視頻分享!NintendoSwitch的現狀以及有關開發的說明。希望對於在Switch上開發有興趣卻還沒有開始的開發者們有所幫助和解疑。
  • 我做獨立開發者的第二年
    運用一年,從微軟、谷歌的軟體工程師,到自成體系的開發者,本文作者是如何一步一步從獨立技術棧到項目構建,從賠錢到掙錢,從 0 到 1 成長為一位真正獨立開發者的?
  • 一個人也能做開放世界遊戲?獨立開發者復盤
    不過,這不意味著開放世界就是中小團隊的禁區,比如海外獨立開發者Adam Robinson-Yu就在2019年發布了一款開放世界遊戲《A Short Hike》,而且只用了數月的時間研發,在此前的GDC演講中,他對整個項目做了詳細復盤,其中一些做法可能是對同行非常有用的。
  • 獨立遊戲如何掙錢?
    獨立遊戲如何掙錢?我想這是每個獨立遊戲開發者都會關注的問題。按照傳統遊戲的發售方式,一般分為開發商-發行商-平臺這三個角色。開發商把遊戲做出來,發行商去宣傳推廣遊戲烘託熱度,平臺負責售賣。這種模式下,獨立開發者掙不到什麼錢。首先發行商對於獨立開發者比較強勢,分成按5成來算吧,已經算良心了,平臺固定抽三成。如果還要加上引擎授權費,前期的製作費用。不光不掙錢,多數都是賠錢。因為還有時間成本在裡面。
  • 《蓋瑞模組2》在做了?開發者在推特上用梗圖暗示!
    《蓋瑞模組》是一款Steam好評如潮(好評率96%)的多人沙盒遊戲,與一般遊戲不同的是,它沒有預定的目標,而是提供工具和物理系統,讓玩家自由創造遊戲內容。最近該遊戲的創造者Garry Newman在推特上暗示:《蓋瑞模組2》正在開發中!
  • 【Unity插件】Easy Character Movement插件 官方文檔翻譯
    插件介紹Easy Character Movement插件Unity商店地址:Easy Character Movement - Asset Storehttps://assetstore.unity.com
  • 獨立遊戲《Alto's Adventure》開發者講述開發歷程
    最近的兩年裡,我所有精力全都耗費在Alto的冒險(Alto's Adventure)這款遊戲的製作上了。幾周前,我終於熬出頭了:遊戲正式發布了。這是一段非常驚險的經歷,我不知道我能否用文字準確地表達我的感受。不過,首先,我要感謝所有下載這款遊戲的玩家,是你們讓我的這些付出沒有白費。然後,我打算整理幾篇文章詳細總結一下在開發過程中獲得的經驗和遇到的挑戰。
  • 能夠幫助獨立遊戲開發者的5大遊戲引擎
    在這裡我將列出最值得推薦的5大遊戲引擎。它們都是具有直覺性且可定製化的遊戲開發解決方法。Unity許多獨立遊戲開發者在各種類型的遊戲中都使用了Unity。這是一種跨平臺遊戲引擎,不僅能夠幫助你創造互動2D和3D遊戲,同時也能讓你與用戶進行交流,幫助你優化遊戲並最終獲得成功。
  • Unity 實用技巧 - 從實踐中總結經驗
    當你在 Unity3D 中編輯場景,突然死機時,可以在項目文件目錄中找到 Temp 文件夾,雙擊文件夾,找到_Backupscenes 文件夾,把後綴為 .backup 的文件後綴改為 .unity ,然後拖進 Unity3D 的 Project 界面裡面,這樣就可以還原死機前場景最後情況。
  • 如何搭建個人獨立博客網站?
    有網友留言想看看,如何搭建博客,今天他來了(liao)。這是一個搭建WordPress博客網站的教程,內容會很細順便科普一下相關概念,小白也不用怕,相信我,你肯定聽得懂、做得好。為什麼搭建博客?想先說一下這個古老的東西「博客」,有人說博客已經過時了,現在大多數人都用手機看朋友圈、微博等。
  • 獨立遊戲開發者克服沮喪情緒的5種方法
    作者:Dan Fabulich沮喪情緒在獨立遊戲開發者中很常見。獨自開發大型創意項目是個巨大的情感挑戰。獨立遊戲開發者需要長時間的工作,而且往往是獨自工作。你不斷直面自己的藝術軟肋,懷疑是否能夠完成這個項目。即便能夠完成項目,也會對是否有人欣賞自己的作品表示擔心。
  • 獨立遊戲開發者:我們想做一點不一樣的東西
    在求職之前上知乎看看,裡面的「匿名用戶」會告訴你最真實的遊戲公司狀況;有產品上線,開發者可以看到中肯的遊戲評測;一些遊戲公司的老闆也喜歡在知乎上給玩家和大眾解疑答惑;遊戲圈有大新聞,知乎上肯定已經有人已經討論開了。今天要聊的獨立遊戲開發者也是知乎上異常活躍的人群之一。
  • Unity聯手騰訊遊戲推出防沉迷系統開發工具 你期待嗎?
    竟然剛剛看到騰訊遊戲推出防沉迷系統開發工具,這個到底用處多大,一起來看看吧據騰訊科技消息,實時3D內容創建平臺Unity聯手騰訊遊戲共同推出防沉迷系統開發工具。該工具分為登錄模塊,計時模塊以及充值模塊。目前,該開發工具作為Unity Player身份包的部分內容已經上線,可供開發者在Unity編輯器裡的Package Manager中進行下載。
  • 海外獨立開發者的建議:在開發遊戲之前需要了解的8件事
    本文是海外獨立遊戲人在製作出第一款遊戲之後,總結下來的8點經驗。可能別人的經驗不一定能給自己知名方向,但是卻可以避免踏入同樣的坑。  2.立即寫下所有東西  這個習慣不僅在遊戲研發中有用,在現實中對於記憶也是很有益的。重要的是把事情先寫下來,否則你可能就不會去做。
  • Unity3D 遊戲插件系列視頻 Daikon Forge GUI視頻教程
    這個視頻是為unity3d遊戲開發者量身定做的gui系列視頻,相信大家都對ngui 2dtookkit這些gui插件應該很熟悉,Daikon Forge GUI這個插件也是用來開發GUI界面的一款非常優秀的插件
  • 專訪《Bad Land》製作人:一款獲得蘋果大獎的獨立遊戲的誕生 遊戲葡萄
    後來,Johannes去了Redlinx,參與《Trail》系列遊戲的開發,在這段期間,他深深地被那些獨立工作室所吸引,於是他跑去和Juhana探討,發現對方也有類似的想法,兩人一拍即合,便決定出去單幹,建立了獨立工作室Frogmind。「我認為到了合適的時機。」 Johannes在自己的博客裡寫道,他還為他們的第一款遊戲Frogmind做了一個發布倒計時牌。
  • 1人24小時做原型、5000英鎊研發的獨立遊戲:[孤獨的託馬斯]收入千萬美元
    和很多獨立開發者不同的是,Mike Bithell的這款大作是在有正式工作的時候做出來的,最初是在Blitz Games的一個創意原型,後來加入Bossa Studios利用業餘時間做出了PC和主機版本,開發者透露,該遊戲的完整版製作成本為5000英鎊。《孤獨的託馬斯》到底是怎樣的遊戲,作為一個獨立開發者,Mike Bithell又是如何實現收入破千萬美元的呢?