前往
大廳
主題

【遊戲開發日誌 #11】場景總管、邊界牆、水域地形

サンエックス | 2021-11-10 19:19:01 | 巴幣 6944 | 人氣 1124

上篇 #10.5 時本來預定 10 月底前後就發文的,沒想到在圖層混合跟遮罩處理上遇到了幾個意料之外的瓶頸,也就一路拖延到了現在。

這段期間主要集中在場景管理和幾個地形機制上的開發,替換掉原先有效能問題的外部插件,對場景物件進行預製化,以及對將來的地圖系統做鋪墊等。


◆【場景總管】
和場景相關的內容讓它一手包辦,將數個原有的功能整合、改寫而成。

● [場景轉換]
已有功能的整改,處理場景區塊的載入/卸載,對應物件的啟用/停用,設置當前場景及資訊獲取。
■ [轉換邊界]
即傳送玩家到不同地點用的物件,當前有分「邊界型」和「互動型」,前者為玩家深入該物件半側即觸發場景轉換,後者則是透過玩家使用互動鍵實行。

場景轉換目標除了透過直接指定座標外,更多場合是想指定對應物件的位置來作為目的地。
Unity 傳統上無法在跨場景間進行物件參照的序列化儲存,這次額外用了 Unity 官方的跨場景參照插件來達成,即可在實際運行期間將玩家傳送到對應場景的指定物件座標上。

● [區域管理]
儲存各個場景們所形成的區域,以及其 BGM 類型、環境參數等預設值,基本上都能於「場景根基」再行覆寫。
■ [鄰近分支]
根據該區域場景的鄰近狀況進行編排,並於將來實際反映於地圖介面之上。各場景的佔位節點基本上為矩形,一般場合上彼此互不重疊。
Δ 編輯器上的示意圖,不表示實際遊戲內的狀況。
■ [士氣變化]
於特定區域中,影響遊戲難度的「士氣」系統變化規則,包括指定敵人物件對其增減影響、能力參數變化曲線。

● [場景根基]
各場景的源頭物件,掌管該場景所有主要資訊以及啟用狀態,可覆寫區域預設的場景設定值。
掌管部分鏡頭處理事宜,配合上之前導入的 ProCamera2D,如鏡頭邊界視差處理功能。

● [場景遮罩]
針對地形物件的即時動態痕跡或染色。

● [動態地形]
橫向動作遊戲常見的浮動平台,如今才終於完成了這一塊。
也更加深刻體會到 DoTween 的實用性,能做出相當流暢的動態循環效果。

這項功能擱置至今是因為有些考量的緣故。當角色站立於動態地形上要使其隨之進行跟隨,常見的做法是讓角色物件成為該地形的子物件,使角色連帶受動態移動的影響來達成。
不過該方法可能會有潛在風險,當地形因其他狀況下需要停用時,此時站在該地形上的物件也會被一併停用。雖然能夠在地形停用時能對其進行額外處理,但並不太直觀,反而會變得複雜化。
DoTween 能透過 OnUpdate,計算動態的位移量並作用到站在地形上的物件們,達成不調整物件親子關係來連帶移動的目的。

◆【預製物件庫】
對 Prefab 分門別類,用來新增特定物件用。
Δ 不必再從 Project window 慢慢找對應的 Prefab 了


◆【地形邊界牆】
意外促成上篇文誕生的原因,實踐起來比理論和結果要來得複雜許多,所幸如期完成。

停用邊界牆 啟用邊界牆

地形的邊界處形成針對該角色的專屬空氣牆,用意是避免角色在邊界處動作時,因為地形高低差而產生落下判定,進而導致動作被打斷
像是玩家正在對敵人打一套 Combo,途中滑出邊界而被中斷攻擊,不僅可能會製造攻擊機會給敵人,也破壞了遊戲節奏。
Δ 圖中在攻擊瞬間向右施了 200 單位的力,也照樣能擋住。
此外,也能用來避免 AI 意外掉出場景邊界,或是用來防止玩家從相對的高處落下,而出現「跳崖」的情形。

● [AI 角色無法主動進入場景轉換邊界]
邊界牆的延伸,水平方向的轉換邊界會於對應半側產生障礙物,使玩家以外的角色物件受阻隔,避免 AI 物件身處那些鏡頭上不可觸及之處。
想到以前展覽時就出現 Boss 跑到轉換邊界待機,讓玩家找不到的情形。


◆【水域地形】

比預期上還花了額外近兩周才完成的項目,也是之前一直很想做出來的視覺效果。
原本有想過用常見的以 Mesh 為基底,和碰撞體交互配合頂點移動來製作動態水體的樣式,網路上也找得到範本專案。但這種水體若不和碰撞體互動時就比較偏向一灘死水,在畫面上也就比較呆板、枯燥。
Δ 水域物件的設置欄位

最後想到的點子就是讓水體透過循環動畫可以常時流動,像是一些遊戲裡的血量 UI,是以燒瓶狀容器內含流動的液體來呈現一般,不過這次只是把概念移植到場景地形上而已。

先前場景中的動態流水全是場景裝飾,這次的水域地形是要能角色物件產生互動效果的,除了找資料繪製元件外,在處理遮罩問題和圖層關係上,前後用了快 20 個圖層,還真的讓我費了不少工夫。
水面潑濺和氣泡粒子也會隨互動的碰撞體尺寸,以及其當下的速度而有所變化。
Δ 水體顏色、附加元素都可以自訂


總之場景相關的主要系統就此告一段落,接下來會集中改在 UI 架構的整改上面。之前把 Unity 版本升級後,不少 UI 上的部件都跑掉了,不去修復也不行。

先來去破個廖添丁,首發日就在心癢了。


以上,感謝閱覽

創作回應

ㄉㄞ(๑•̀ㅂ•́)
佬……
2021-11-10 20:22:01
サンエックス

https://i.imgur.com/P6OLtJt.jpg
2021-11-11 09:38:26
樂小呈
2D 水我也想做很久了,有空來試試[e7]
2021-11-10 20:28:10
サンエックス
準備好等著看shader專家表現了 [e23]
2021-11-11 09:38:39
AYA
2021-11-11 00:00:06
サンエックス

https://i.imgur.com/u6HdFeE.gif
2021-11-11 09:38:51
奧辛鮭鮭Bang
不是很懂,但是就是很屌的那種
2021-11-15 10:31:31
サンエックス
不必理解,用心去感受便可(?
2021-11-15 13:08:03
虛鹿
2021-11-20 05:52:14
サンエックス
又佬 又佬 又
2021-11-20 20:45:25

更多創作