ここではタイマーを使って指定フレーム数でイベントを起こしたり、ランダムにイベントを起こす方法を解説しています。このチュートリアルではオーダー関数のみに変更を加えています。
イベントを起こすフレーム数を設定する
指定されたフレーム数でイベントを起こすには、オーダー関数にTimerFrameを設定する必要があります。これは別のオーダー関数へ移行するまでの変更時間(合計フレーム数)と考えると、理解しやすいかと思います。また、移行するオーダー関数はFuncListTimerで設定します。詳しくはドキュメントページの「オーダー関数」でご確認ください。
Sample_Script.func
## ============================================
## オーダー関数設定
## ============================================
・
・
・
## 左上に移動
<FUNC_ORDER_REG>
<SET_CONFIG>
FuncName = OR_Move_Up_L
FuncType = LEFT_EVENT
FuncNameMotion = MO_Move_Up_L
FuncNameImageLayer = IL_Eye
PosX = X
PosY = Y
TimerFrame = 60 + Rand(300)
FuncListEvent = OR_Move_Up_R, OR_Move_Down_R
FuncListTimer = OR_Move_Up_L, OR_Move_Down_L, OR_Move_Up_R, OR_Move_Down_R
FuncListTurn = OR_Move_Down_L
FuncListLButton = OR_Drag_L
</SET_CONFIG>
</FUNC_ORDER_REG>
## 右上に移動
<FUNC_ORDER_REG>
<SET_CONFIG>
FuncName = OR_Move_Up_R
FuncType = RIGHT_EVENT
FuncNameMotion = MO_Move_Up_R
FuncNameImageLayer = IL_Eye
PosX = X
PosY = Y
TimerFrame = 60 + Rand(300)
FuncListEvent = OR_Move_Up_L, OR_Move_Down_L
FuncListTimer = OR_Move_Up_L, OR_Move_Down_L, OR_Move_Up_R, OR_Move_Down_R
FuncListTurn = OR_Move_Down_R
FuncListLButton = OR_Drag_R
</SET_CONFIG>
</FUNC_ORDER_REG>
## 左下に移動
<FUNC_ORDER_REG>
<SET_CONFIG>
FuncName = OR_Move_Down_L
FuncType = LEFT_EVENT
FuncNameMotion = MO_Move_Down_L
FuncNameImageLayer = IL_Eye
PosX = X
PosY = Y
TimerFrame = 60 + Rand(300)
FuncListEvent = OR_Move_Up_R, OR_Move_Down_R
FuncListTimer = OR_Move_Up_L, OR_Move_Down_L, OR_Move_Up_R, OR_Move_Down_R
FuncListTurn = OR_Move_Up_L
FuncListLButton = OR_Drag_L
</SET_CONFIG>
</FUNC_ORDER_REG>
## 右下に移動
<FUNC_ORDER_REG>
<SET_CONFIG>
FuncName = OR_Move_Down_R
FuncType = RIGHT_EVENT
FuncNameMotion = MO_Move_Down_R
FuncNameImageLayer = IL_Eye
PosX = X
PosY = Y
TimerFrame = 60 + Rand(300)
FuncListEvent = OR_Move_Up_L, OR_Move_Down_L
FuncListTimer = OR_Move_Up_L, OR_Move_Down_L, OR_Move_Up_R, OR_Move_Down_R
FuncListTurn = OR_Move_Up_R
FuncListLButton = OR_Drag_R
</SET_CONFIG>
</FUNC_ORDER_REG>
上記4つのオーダー関数は全て同じ内容が追加されています。
TimerFrameは変更時間(合計フレーム数)を設定しています。60+Rand(300)となっていますが、最初の60は60フレームの事です。後ろのRand(300)とは0~300(フレーム)までの数値がランダムに選択される命令文です。この命令文は括弧内の数値をRand(150)などと変えることでランダム値の範囲を変更できます。この2つが+(加算)されているので60~360フレーム(約2秒~約12秒)の間の数値がランダムに選択されます。こうすることでモーションの変更のタイミングにランダム性を持たせ、動きに変化を付けることが可能となります。もちろんRand(300)を消してTimerFrame=60と定数(固定の数値)のみでも使用可能です。
FuncListTimerではTimerFrameで設定したフレーム数でイベントが発生した時に、移行するオーダー関数を設定しています。オーダー関数では左上、左下、右上、右下とランダムに移動方向が変化するようにしています。
※TimerFrameを設定した場合は必ずFuncListTimerでオーダー関数を設定してください。 そうしないとエラーが発生します。
以上でタイマーの設定は終了です。ファイルを保存して動作をご確認ください。
今まで移動範囲に当たらないと移動方向が変化しなかったキャラクターがランダムに移動方向を変えるようになります。
下記ファイルはここまで作成したサンプルのキャラクターデータです。
以上で「フレームタイマーを使う」のチュートリアルを終了します。