1. 敵我X、Y相減後絕對值 (後面簡稱差距) 的總和,偵測範圍呈現正菱形。
2. 先判斷X差距,再判斷Y差距,偵測範圍呈現矩形、正方形 ;
若想以事件或主角的方向產生範圍,則X或Y值直接用相減之後的值來判定。
這些形狀不免想到戰略遊戲和仙境傳說的技能效果範圍~ 照理來說透過其他算式,偵測範圍應該還能是圓形或橢圓形,不過目前沒有進行測試就不贅述。20210215更新
同上一篇內容,關於時常要偵測數值、判斷某個事件行為的工作,我會做一個自動處理的事件。座標範圍方面,我執行的內容是 :
1. 取得主角X座標值
2. 取得主角Y座標值
3. 取得化石X座標值
4. 取得化石Y座標值
5. 運算X差距 Math.abs($gameVariables.value(3)-$gameVariables.value(1))
6. 運算Y差距 Math.abs($gameVariables.value(4)-$gameVariables.value(2))
7. 運算差距總和 Math.abs($gameVariables.value(5)+$gameVariables.value(6))
20210215更新
8. 主角&事件距離(取整數) Math.sqrt(Math.pow(($gameVariables.value(3)-$gameVariables.
value(1)),2)+Math.pow(($gameVariables.value(4)-$gameVariables.value(2)),2))
項目1~4可以用事件內建的功能 "遊戲進度>>控制變數" 來設置座標值當作變數。
項目5~7我用控制變數裡的腳本,打上JS程式碼,以第5項為例 :
Math.abs($gameVariables.value(3)-$gameVariables.value(1))
意思是把變數項目3的值,減去項目1的值,將運算結果絕對值。
Math.abs() 是絕對值運算 ; $gameVariables.value(編號) 是某某變數的數值。
20210215更新
因為太好奇了,所以就去試圓形的偵測範圍 (畢氏定理,求兩點距離),JS語法為 :
Math.sqrt(
Math.pow(($gameVariables.value(3)-$gameVariables.value(1)),2)+
Math.pow(($gameVariables.value(4)-$gameVariables.value(2)),2))
Math.sqrt(數值) 表示開根號,Math.pow(數值,次方數) 。
(圓形的偵測距離分佈)
(化石的中心點以腳為主,作為轉身的軸心)
化石本身作為 移動與圖片動畫 用途,總共設置了13個模式(遊戲開始、死亡R.L.、站立R.L.、移動R.L.、攻擊R.L.、被攻擊R.L.、轉身R.L.)。至於尋找、追蹤、攻擊、死亡等行為模式,則設置自動事件,根據 敵我距離、化石HP變數 來操控化石。
在攻擊方面,由於化石頭部位置不等於本身的中心點,若想以頭為位置觸發攻擊,無法用 "事件接觸" 來執行。因此我就用變數來進行判斷 :
1. 取得主角、化石的座標,化石的方向 (只判斷左、右)。
2. 根據化石的方向,判斷主角座標是否在 (以化石座標去加減變數的) 攻擊位置,例如 :
判斷是否 Y差距= 0 >>
判斷是否 化石向右 >>
判斷是否 玩家X座標 = 化石X+1...以此類推。
3. 若都符合條件,則化石事件切換成攻擊模式 ; 反之則繼續以追蹤模式 (自主移動>>接近)
靠近玩家。
以下是尋找模式的行為模式。
如上,邏輯低下如我光是敘述攻擊如何判斷,用一堆文字表示就很厭世了...常常弄到一半就分心去看網頁... 後來,還是藉由畫出流程圖,才順利弄完化石行為的判定。更何況我還有弄主角與礦車的行為模式,真的是很難受...攻擊招式? 還是算了吧 ! 下次再研究...
(化石的尋找模式流程圖,光是這三個判段我前面就厭世+遊戲測試了好多時間... 畫出來後馬上就會弄事件了。向前一步是因為化石無法面向上、下,於是需要特別走到主角的側邊再接近主角。)