↓ 快轉到主要內容

[大型專案:BK MOD] ~EP.02~ 自定義遊戲地圖編輯器與2D物理系統架構

·1673 字·4 分鐘
作者
Keaton凱特
BK-MOD 是一款動作角色扮演遊戲。主角凱特穿著吉祥物布偶裝,透過努力在世界上生存下去。

遊戲製作進度文跟下載點,未來都會放到BK-MOD官方網站~
https://www.bk-mod.com/

繼前回的說明文,這回小弟將這個地圖編輯器加入了更多的功能(ΦωΦ)。前一次的說明可以參考以下的文章:

上一篇:

[遊戲製作進度] [大型專案:BK MOD] ~EP.01~ 自定義遊戲地圖編輯器的C#寫法淺談

https://hcyang1227.blogspot.com/2023/04/bk-mod-ep01.html

下一篇:

[遊戲製作進度] [大型專案:BK MOD] ~EP.03~ 各種哩哩摳摳的功能陸續上菜嘍

https://hcyang1227.blogspot.com/2023/05/bk-mod-ep03.html

這次我們就不糾結在C#的寫法了(因為太多要講了,乾脆就不講了XD),而是在功能的實現。如果您還是想知道C#的寫法怎麼寫,除了諮詢ChatGPT,也可以寫信給小弟(hcyang1227@gmail),小弟可以跟您分享這數百MB的原始檔喔~畢竟我也沒想說要靠這個專案賺錢,可以分享成果跟寫法就很開心了♪(^∇^*)


首先是地圖編輯器的部分。這次完成了幾個功能:

  • 對應地圖的各種圖片(對的,就是美工啦,可是小弟真的很需要美工嗚嗚嗚)
  • 畫面左邊會有小小的sprite map以及要生成的地圖編輯長寬等設定。
    按滑鼠右鍵可以擷取想要畫的platfrom圖樣。
    按Num+,Num-可以增減要畫的圖樣sprite號碼。
    地圖編輯可以用slider拖拉或是在欄位輸入長、寬、原點位置、方格長等設定。
    為了避免編輯者設定過多的長寬導致執行緩慢,小弟設定上限不得超過50000個方格。
  • 畫面右邊為主要編輯區域。
    按滑鼠左鍵可以畫platfrom圖樣。
    按Ctrl+滑鼠左鍵可以畫出下一個sprite的platfrom圖樣。
    按Ctrl+滑鼠右鍵可以畫出上一個sprite的platfrom圖樣。
  • 復原與重做的功能。
    按Ctrl+Z可以復原一個步驟。
    按Ctrl+Y可以重做一個步驟。
  • 可以一次選擇多個圖樣並繪圖。
    按A,D增減x方向上的選擇圖樣
    按W,S增減y方向上的選擇圖樣
  • 存檔功能與讀檔功能,以及編輯器的彈跳視窗。
    按Ctrl+S或是M可以存檔,並且輸入檔名,檢查是否輸入非法字元等等。
    按Ctrl+L或是N可以存檔,並且輸入檔名,檢查是否輸入非法字元,檔案有無存在等等。

小弟當初在這邊也踩了不少坑,因為在做成遊戲執行檔時,EditorUtility(開啟檔案\存儲檔案\警示的彈跳視窗)是不能匯出的,所以彈跳視窗全部都要自己設計。您可能會說,就using Windows Form就好啦,不,那也是另一個坑。新版的Unity已經不能完美支援.NET 2.0的Windows Form視窗介面了(現在只支援.NET 2.1,即便他們都是這麼老舊),您必須回到舊版的Unity編輯。但是小弟都已經用新版了、回到舊版等於我要把所有程式碼跟內容移植到舊版去(舊版肯定不能向上相容的),所以只好硬著頭皮自己做遊戲畫面內的"假彈跳視窗"(對,不是另外開一個視窗的彈跳視窗)(′Д`)

接著,小弟開始將Unity強大的物理引擎導入,根據platfrom圖樣畫出對應的collider(碰撞判定區域),數十種的collider也是做得挺累人的。不需要受地心引力影響的物件就只加入2D collider,受地心引力影響的物件則加入2D collider與2D rigidbody。最後,設定2D Material的磨擦係數與彈力,並添加到上述的物件,便可以模擬出物件反彈或是慢慢停下等效果。剩下的複雜的物理運算就交給Unity去做,成果也很讓人滿意。

最後,小弟移植以前所做的「拯救貪吃老人大作戰」的藍色史萊姆(SlimeBlue),幫史萊姆加上物理引擎,想方設法將這個小東西的遲滯係數跟摩擦力設定高一些,做了史萊姆會抖動的Animation,以及牠的AI策略(timer降成0時進行走動\停下\跳躍等動作)。雖然還沒有加入異常狀態,不過大體上已經完成可以自己動的藍色史萊姆了,開心。

其他沒辦法用言語表達的部分,就由以下影片內容來說明吧~

目前進度展示影片


文章的最後,也誠徵對這個大型專案開發有興趣的朋友,無論您想做美工、想設計關卡、想寫程式、想做企劃,都歡迎聯絡小弟喔!有想要贊助或推廣的朋友當然也歡迎~不過,因為是做興趣的,沒辦法支持薪水(小弟自己也是吃人頭路…),還請多多見諒…இдஇ