承接昨天的攻擊功能製作。拿取到定位點後要轉換成Raycast再進行偵測。為了方便可以直接在場景裡可看整個Raycast的距離、大小、碰接狀態。直接利用現有的外掛(其實直接用Raycast也行,但有現成可以連Gizmos都準備好了的外掛,比較方便)
給予偵測的設定如下
場景裡畫出的偵測如下
紅色表示有碰到物件,而淺藍色則表示沒有碰到任何物件。多數的物理攻擊只會有一段攻擊,但這裡是直接測試複數攻擊,為了之後的魔法或是弓箭攻擊做準備。
利用Raycast的方式會有幾個不同於直接用Grid距離進行攻擊的設計。如同昨天提及的,傳統的Grid攻擊判定下,近距離武器通常是只能攻擊前方一格,而遠距離武器則是可以攻擊前方數格。而同樣是在一格裡,若是有複數敵人,則在前面位置的敵人沒有全數移除前,也是打不到後排的位置。
但此處用了Raycast,若是將其距離設定在一格的最後方,甚致是第二、三格的最後方,則有可能點到的位置是該格的後排又或是第二格、第三格的怪物(假設第二、三格有怪物的情況)。也就是說光是偵測距離這部份都極有可能會讓原先以Grid為主的戰鬥規則整個變調。
雖然說以格狀為移動的FPDC也不一定要完全遵循以格狀為主的戰鬥規則,但還是希望能有一定部份的規則是相同的。
因此,從這個測試裡得到想法是。如果玩家手中的武器是近距離型式的,則會將Raycast距離直接縮減到只能觸及到該格的一半,如此就算是有可能可以點到後排的敵人,也會因為偵測不到而當作Miss。反之,如果手中的武器是遠距離型式的,就可直接將距離延伸到第二或第三格。
以遠距離武器來說,徜若真的在和敵人交戰(第一格)的情況下,真的打到了第二格或是第三格的怪物,那就還要再思考怎麼處理。
被打到的怪物(雖然目前源頭和過程都還沒有很完整)仍可以加入一些UI上的操作,讓擊中有點表現的層次。
加入了敵人群的怪物動態生成,現階段沒有利用Pool,還要看整體的數量來決定是否需要用到Pool。但之後加入特效時Pool的利用是跑不掉的,因此,準備Pool機制是勢在必行的。
另外,在敵人的頭像上加入了World Space UI以顯示血格。
攻擊時會有扣血和血量降至零後被清除的功能也先暫時加進來了,但敵人群並沒有轉換到作戰狀態,也不是動態產生。敵人群生成這部份會依賴地形生成時一併解決,而戰鬥狀態的轉換還要思考,留待AI進場時再看怎麼處理這塊。
戰鬥本身的起點和終點都是裝備、道具,這個是還沒有進行的部份,除了地形生成外,接下來要朝著實作道具這個方向進行。所以接下來要準備