メニューイベントを使う
ここではメニューイベントについて説明しています。メニューイベントはキャラクターを右クリックしてポップアップメニューが表示された時に発生するイベントです。これを使用することでポップアップメニュー表示時のモーションを設定することが出来ます。

◆ポップアップメニュー表示時のモーションを設定する
モーション関数は「画像をドラッグする」で作成したMO_Stop_LとMO_Stop_Rを再利用します。もちろん新しくモーション関数を作成してもかまいません。また、メニューが出ている時にキャラクターの瞳がこちらを向くようにするため差分ファイルを用意して、イメージレイヤー関数を作成します。ここでは下の画像を使用しています。

sample_eye_02.png
sample_eye_02.png

◆イメージレイヤー関数を追加する
「イメージレイヤー(差分)を使う」で作成したイメージレイヤー関数IL_Eyeをコピーして貼り付けてください。

<Sample_Script.func>
## =============================================================
## イメージレイヤー関数設定
## =============================================================
## メニュー表示時の目
<FUNC_IMAGE_LAYER_REG>
    <SET_CONFIG>
        FuncName = IL_Menu
        ImageName = sample_face_01.png
        Width = 44
        Height = 19
        PosX = 38
        PosY = 50
    </SET_CONFIG>
    <SET_PARAM>
        Width, 0, 0, 0, 3
        0, 0, 0, 0, 150, sample_eye_02.png

    </SET_PARAM>
</FUNC_IMAGE_LAYER_REG>
                  ・
                  ・
                  ・
ここではFuncNameを変更して、<SET_PARAM>では目を開いている部分に新しい差分ファイル(画像)を設定してあります。


◆ポップアップメニュー表示時に移行するオーダー関数を追加する
「画像をドラッグする」で作成したOR_Drag_LとOR_Drag_Rをコピーして貼り付けてください。変更点は赤で表示しています。OR_Move_Up_L以下の関数は項目を一つ追加しているだけです。

<Sample_Script.func>
## =============================================================
## オーダー関数設定
## =============================================================
## メニュー表示時 左向き
<FUNC_ORDER_REG>
    <SET_CONFIG>
        FuncName = OR_Menu_L
        FuncType = MENU_EVENT
        FuncNameMotion = MO_Stop_L
        FuncNameImageLayer = IL_Menu
        PosX = X
        PosY = Y
        FuncListEvent = OR_Move_Up_L, OR_Move_Down_L
        FuncListLButton = OR_Drag_L
    </SET_CONFIG>
</FUNC_ORDER_REG>

## メニュー表示時 右向き
<FUNC_ORDER_REG>
    <SET_CONFIG>
        FuncName = OR_Menu_R
        FuncType = MENU_EVENT
        FuncNameMotion = MO_Stop_R
        FuncNameImageLayer = IL_Menu
        PosX = X
        PosY = Y
        FuncListEvent = OR_Move_Up_R, OR_Move_Down_R
        FuncListLButton = OR_Drag_R
    </SET_CONFIG>
</FUNC_ORDER_REG>

                  ・
                  ・
                  ・
## 左上に移動
<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
        FuncListMenu = OR_Menu_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
        FuncListMenu = OR_Menu_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
        FuncListMenu = OR_Menu_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
        FuncListMenu = OR_Menu_R
    </SET_CONFIG>
</FUNC_ORDER_REG>
OR_Menu_LとOR_Menu_RではFuncTypeにMENU_EVENTを設定しています。これを設定することでポップアップメニューが表示された時にイベントが発生し、このFuncTypeを持つオーダー関数に移行します。MENU_EVENTを持つオーダー関数ははポップアップメニューが消えた時にイベントが発生するのでポップアップメニューが消えたら通常動作に移行するようにFuncListEventを設定します(ここではFuncListEventに変更は加えていません)。また、FuncListLButtonにOR_Drag_LとOR_Drag_Rを設定してポップアップメニュー表示時に、キャラクターがドラッグされた時の右向き・左向きにあわせています。
OR_Move_Up_L以下で変更されている部分は右向き・左向きにあわせて関数が移行するようにFuncListMenuを設定しています。ポップアップメニューが表示されてイベントが発生した時にこの項目が有れば、その中から移行する関数が選択されます(複数設定可)。これを設定しない場合は、「画像をドラッグする」で説明した内部的なリストから選択されます(キャラクターの向きがランダムに変わってしまいます)。MENU_EVENTを持つオーダー関数が一つも無い時は、ポップアップメニューが表示されてもイベントは発生しません。 また、ここでは使用していませんがFlagMenuFuncをOFFと設定することでポップアップメニューが出ていてもメニューイベントが発生しないようにする事が可能です。

ポップアップメニュー表示

以上でスクリプトの変更は終了です。 これでキャラクター上で右クリックして、ポップアップメニューが表示された時にキャラクターの瞳がこちらを向いて、その場に停止します。

下記ファイルはここまで作成したサンプルのキャラクターデータです。
Menu_Event.zip


以上で「メニューイベントを使う」のチュートリアルを終了します。
カスタムメニューを使う」へお進み下さい。




↑このページのトップに戻る