如題
以為能把 Hitbox 相關的功能在半個月內搞妥,就結果來看我完全低估它了。
但距離上篇文又過去兩個月,至少得上來發個文當生存報告,總之能寫多少算多少。
先從標題的「待辦事項」說起,以視覺上來說長這樣:
※ 圖中是上個月 19 號時的截圖
指的就是腳本裡的警告 log,第三方腳本的皆已經處理過,專案裡的警告都是自己額外放的。
圖中有上 [System.Obsolete] 過時內容的是一例,用來標記要準備替換或翻新的內容。
另一種則是於特定行數程式碼中的警告標記,可能是表示寫到一半,現階段需要先完成其他部分,日後再回來完善或整合的區塊,例如這樣:
直接透過偵測執行不到的程式碼來丟個特定行數的警告到 console,簡單好用。
我不確定有沒有更好的做法,比方說能在 console 上的警告再附加點像是便條的額外說明,有人知道的話請教教我,這邊會很感謝你。
長期下來就變成上個月 19 號的那張截圖的樣子了,各種細碎的事項湊到上百多條,是該來清理一番。挑幾個佔比相對較大的來簡單帶過:
◆【互動型場景轉換】
可互動物件的延伸,先前是運用於拾取物品,這次是整合到場景轉換的功能。
提示文字決定和拾取物品一樣,顯示在目標的底側,主要是這類項目一般都是屬於接地的,顯示在下方可以減少覆蓋到角色或其他場景內物件的情況發生。
◆【場景敵人生成】
場景中控管敵人事宜的物件,可設置敵人生成率、類型佔比與擊倒數量。
也整合到了遊戲存讀檔,根據物件獨立的 Guid 得知該敵人是否擊倒的狀況。
敵人生成物件額外多了個比較明顯的提示:
哭啊我長久以來都忘記物件的 icon 是可以直接改的,之前還花一堆時間在那邊寫 OnDrawGizmos,只為了顯示特定物件於場景內的提示樣式。
◆【Hitbox】
簡單來說是攻擊判定,但還得牽涉到角色反饋還有給 AI 當預判區域用等諸多功能,弄到途中還發現到角色系統有個不修不行的漏洞,工作量整個就上去了。
Δ Hitbox 對角色的反饋特效及音訊
動畫特效生成位置主要是 Hitbox 與目標碰撞體重合範圍上的隨機點。
取隨機點的算法於程式上從簡化了(雙方碰撞體不一定皆為矩形),當初想算出精準的重合隨機點,甚至有個方法需要射出至少 8 次 raycast 才行,現在回頭看,我當初寫這玩意兒幹嘛,徒增效能的開銷,玩家也辨識不到,現在果斷拿掉,是說幾何學真難搞。
Δ Hitbox 傷害效果與反饋設置
衰退或說是削減是新增的功能,可以根據 Hitbox 的存續時間或目標距離遠近,來減少傷害或擊退力道。
目前距離減損的計算方法為:
Hitbox 發送源為始點,Hitbox 涉及範圍最外側為終點,以命中目標的位置為基準,來進行插值乘算。
且每個象限角的終點為分開的,大致上的示意圖如下:
Δ 越接近原點傷害越高,反之接近終點則越低。
最後的設置架構則是 Hitbox 的生成規則與過渡序列:
決定 Hitbox 的生成位置、尺寸、過渡時間、變形狀況以及循環次數……等。
與水域地形的反饋也完成了,會根據攻擊類型還有施力方向而有所變化:
總而言之,「待辦事項」已經刪減到僅剩下個位數,繼續把 Hitbox 對角色的反饋作用做好就差不多了。
題外話,上個月就在 GNN 看到 Steam 即將停止支援 win8.1 以下的作業系統,現在還直接貼一條橫幅在我用戶端的頭上。
年底前得準備升級作業系統了,win8.1 這 8 年用下來的感想就是,真的不如 XP,各種方面都是。