iT邦幫忙

2021 iThome 鐵人賽

DAY 10
0
Mobile Development

FPS dungeon crawler game devlog系列 第 10

Dungeon Mizarka 010

解決房間生成導致A★出現問題

在最先的測試用場景中,每格不是空的要不然就是障礙物或是場地外。生成的房間直接加入了牆壁,而這個牆壁有可能因為厚度的關係,導致A★掃瞄後出現偏差?

調整一下房間的生成後仍是一樣的結果,只好回看程式碼的部份,才發現運算時直接利用A★給的位置進行運算,但A★給的是整數,也就是該位置乘上1000,比方說在X為4的地方,A★會將它弄成4000,所以拿回來的值要自行處理,但之前沒有注意才會整數直接除以1000造成相當大的偏差。

修正後解決第一個問題。但可以穿牆的問題依然沒有辦法解決。

這個問題於原先的測試場景裡是不會發生的,但在這樣的地板和牆壁的設置下,會產生那片牆壁不存在A★的空間中。

目前想到解決的方法是利用Raycast進行偵測,這也包含了當敵人群在行進方向時會阻擋玩家。但這樣仍有可能會於製作小地圖時產生一樣的問題,這部份還沒有想到更好的解決方法,先記錄下來之後處理。

反正這也不是一時三刻可以解決的,一直卡在這個問題上也沒有意義。接下來先調整敵人群的配置和敵人如何產生於敵人群的機制。

敵人群

一群一群的敵人基本上只是空的GameObject,佔據一個4x4的空間,現有機制是利用九宮格的方式進行怪物在此空間內的生成。不過這會回到之前提到的問題,玩家手中的武器若是近戰類型,則會限制只能打到九宮格的前二排(共六個位置)若是敵人產生在最後一排(三個位置),而玩家沒有方式打到最後一排時,玩家只能選擇移動規避和這一組敵人的遭遇,而前提是玩家沒有被夾擊。

這其實是偏向設計面的問題,規則若是改成前排敵人消失則後排敵人補位,又或是戰鬥中玩家的攻擊位置(甚至是自身位置)有所調整,都可以解決這個問題。

撇開這個射擊距離,敵人群目前沒有AI,誠如一塊立牌般站在那挨打。但要加入AI,要有較完善的基本功能進來才行。像是敵人除了普通攻擊外,有沒有可以有相對應的特殊攻擊,技能也好、魔法也好。

為了簡化複雜的技能樹設定,不論是玩家或是敵人,都不考慮設計技能,但回應之前的設定,玩家被定位成初階魔法師,自然是少不了魔法的施放。但不想要走向日式RPG的架構,升到某個等級學會什麼魔法這樣的設定。偏向美式的風格,採用使用卷軸的方式進行魔法施放。

也就是在這樣的設定下,需要有卷軸可以使用和施放,並且是讓玩家和敵人同樣遵守相同的機制。自然而然地,加入道具這件事就變得蠻重要的。

道具系統

道具系統一直以來是是遊戲玩法中最重要的系統之一,多年來在Unity Asset Store(UAS)裡出現過不少時代的眼淚。像是Odin Inspector外掛的開發者數年前還沒有開發Odin Inspector時出過的- Inventory Pro

以及它後來出的Rucksack

都曾經是功能相當完善,是否好用則見人見智。不過這二套應該則前些年都慢慢地的消失了。好在UAS裡仍是有一直有新的方案出來,這幾套是目前UAS中相當不錯的選擇

這次製作中選擇了Ulitimate Inventory System(UIS),這套看起來功能相當的完善但又顯得複雜,接下來幾天會了解如何使用UIS並力入加到FPDC的製作中。

了解如何使用UIS

花了一些時間將UIS提供的範例稍微看了一下後,依樣畫葫蘆的將Category放入到FPDC專案裡

不太了解這些複雜的分類為何用途,但其分類的方式很像是在做Tag,且Tag之間還有傳承的概念在裡面。而這些像是Tag的分類,也可以自行加入資料。看起來像極了VS的Variables元件所提供的供能,挾帶了分類後顯的更加有條理。

有了分類後就是試著加入實際的道具,先以這些物件當做測試

再往下慢慢得研究。


上一篇
Dungeon Mizarka 009
下一篇
Dungeon Mizarka 011
系列文
FPS dungeon crawler game devlog30

尚未有邦友留言

立即登入留言