Home > Tutorial
 

ARPG系列─判定攻擊

假設我們要做一個如下圖的攻擊:
○=主角
●=攻擊範圍
 ●
○●●
 ●

//攻擊時,才呼叫事件判斷
操作變數:[0001:1x]代入,主角X座標
操作變數:[0002:1y]代入,主角Y座標
條件分歧:主角面向上 //向前攻擊要判斷主角方向
     操作變數:[0002:1y]加,1 //通過計算得出攻擊範圍
     操作變數:[0003:2x]代入,變數[0001]的值
     操作變數:[0004:2y]代入,變數[0002]的值
     操作變數:[0004:2y]加,1
     飛往指定標記:1號
:分歧結束
條件分歧:主角面向上
     操作變數:[0002:1y]減,1
     操作變數:[0003:2x]代入,變數[0001]的值
     操作變數:[0004:2y]代入,變數[0002]的值
     操作變數:[0004:2y]減,1
     建立記號:1號
     操作變數:[0005:3x]代入,變數[0001]的值
     操作變數:[0005:3x]減,1
     操作變數:[0006:3y]代入,變數[0002]的值
     操作變數:[0007:4x]代入,變數[0001]的值
     操作變數:[0007:4x]加,1
     操作變數:[0008:4y]代入,變數[0002]的值
:分歧結束
條件分歧:主角面向左
     操作變數:[0001:1x]減,1
     操作變數:[0003:2x]代入,變數[0001]的值
     操作變數:[0004:2y]代入,變數[0002]的值
     操作變數:[0003:2x]減,1
     飛往指定標記:2號
:分歧結束
條件分歧:主角面向上
     操作變數:[0001:1x]加,1
     操作變數:[0003:2x]代入,變數[0001]的值
     操作變數:[0004:2y]代入,變數[0002]的值
     操作變數:[0003:2x]加,1
     建立記號:2號
     操作變數:[0005:3x]代入,變數[0001]的值
     操作變數:[0006:3y]代入,變數[0002]的值
     操作變數:[0006:3y]減,1
     操作變數:[0007:4x]代入,變數[0001]的值
     操作變數:[0008:4y]代入,變數[0002]的值
     操作變數:[0008:4y]加,1
:分歧結束
操作開關:[0001:攻擊中]設為 開          //開關是用作避面不在攻擊的時候被判斷為擊中
等待:0.3秒          //調整攻擊之間的時間,和讓怪物有時間去"看清楚"自己是否被擊中
操作開關:[0001:攻擊中]設為 關

//怪物與攻擊重疊判定,在怪物事件定期並列執行
操作變數:[0009:怪物x]代入,這個事件Y座標
操作變數:[0010:怪物y]代入,這個事件Y座標
條件分歧:開關[0001:攻擊中]為 開
     條件分歧:變數[0009:怪物x]為V[0001]相同
          條件分歧:變數[0010:怪物y]為V[0002]相同
               (怪物被擊中)
          :分歧結束
     :分歧結束
     條件分歧:變數[0009:怪物x]為V[0003]相同
          條件分歧:變數[0008:怪物y]為V[0004]相同
               (怪物被擊中)
          :分歧結束
     :分歧結束
     條件分歧:變數[0009:怪物x]為V[0005]相同
          條件分歧:變數[0010:怪物y]為V[0006]相同
               (怪物被擊中)
          :分歧結束
     :分歧結束
     條件分歧:變數[0009:怪物x]為V[0007]相同
          條件分歧:變數[0010:怪物y]為V[0008]相同
               (怪物被擊中)
          :分歧結束
     :分歧結束
:分歧結束

怪物攻擊主角的命中判斷也是這樣做,只不過是相反。
至於怪物AI,很簡單的,下次再寫!

 

回前頁

Hosted by www.Geocities.ws

1