假設我們要做一個如下圖的攻擊:
○=主角
●=攻擊範圍
●
○●●
●
//攻擊時,才呼叫事件判斷
操作變數:[0001:1x]代入,主角X座標
操作變數:[0002:1y]代入,主角Y座標
操作開關:[0001:攻擊中]設為 開 //開關是用作避面不在攻擊的時候被判斷為擊中
條件分歧:主角面向上 //向前攻擊要判斷主角方向
操作變數:[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
:分歧結束
等待: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,很簡單的,下次再寫!
[此贴子已经被作者于2004-10-29 20:47:56编辑过] |