イベントの種類と実行順について

今回はCF2.5のイベントエディタの基本的な仕様について解説いたします。
※ヘルプの『イベントを理解する』の章も併せてお読みください。

■イベントとは
単にフレームにキャラクタや背景オブジェクトを配置しただけではゲームにはなりません。『キーを押した時、自機から弾を発射』、『弾と敵が衝突した時、敵を破壊』など、ゲームの進行によって発生する事象を記述して進行を制御する必要があります。これを『イベント』と呼びます。
イベントは『条件』と『アクション』によって構成されています。上記の例で言うと『キーを押した時』『弾と敵が衝突した時』が条件で、『自機から弾を発射』『敵を破壊』がアクションです。

■3種類のイベントエディタ
CF2.5において、イベントを記述できる場所は3種類存在します。『フレームイベント』、『グローバルイベント』、『オブジェクトイベント』です。

■フレームイベント
cf25_blog_2015-08-09_frameevent1
ストーリーボードエディタから各フレーム内に入り、『フレームエディタ』を選択すると表示されるのが『フレームイベント』です。
各フレームに1つずつ存在し、ここで記述したイベント内容はそのフレームの実行中にのみ動作する一番基本的なイベント記述場所です。
通常、タイトル画面ならタイトル画面のフレーム、ステージ画面ならステージ画面のフレームと、各フレームの進行をするにはここへイベントを記述していきます。
また、フレームイベントに限り、『イベントリストエディタ』というイベントをリスト表示にした別のエディタを使うことができます。

■グローバルイベント
cf25_blog_2015-08-09_globalevent1
『アプリケーションプロパティ』の『イベント』タグから入ることができます。
グローバルイベントに記述したイベントは全てのフレームで実行されます。例えば、基本的なゲームシステム部分など、複数のフレームで共通なイベントはここに記述しておくと、各フレームに同じイベントを記述する手間が省けますし、メンテナンス性の向上も図ることができます。
cf25_blog_2015-08-09_globalevent2
cf25_blog_2015-08-09_globalevent3
初期状態では利用できるオブジェクトが少ないですが、右端の『新しいオブジェクトをインポート』をクリックすると、全フレームに挿入されているオブジェクトのリストが現れますので、必要なオブジェクトだけインポートして使うという形になっています。

cf25_blog_2015-08-09_globalevent4
なお、グローバルイベントを適用したくないフレームがある場合は、『フレームプロパティ』の『グローバルイベントを含める』のチェックを外すと実行されなくなります。

■オブジェクトイベント
cf25_blog_2015-08-09_objectevent1
アクティブやカウンターなど、フレームに挿入したオブジェクトにイベントを記述して持たせることができます。
フレームに挿入されているオブジェクトのプロパティの『イベント』タグから入ることができます。『新規作成』ボタンをクリックするとオブジェクトイベントが追加されます。オブジェクトイベントは1つのオブジェクトに複数設定することができます。『…』部分をクリックして『編集』ボタンをクリックするとエディタへ入れます。
cf25_blog_2015-08-09_objectevent2
エディタへ入ると、オブジェクトイベントを設定しているオブジェクトだけはエディタに現れていますが、他のオブジェクトとの連携が必要な場合は、グローバルイベントと同様に『インポート』ボタンから追加してください。ただし、追加できるのは同フレームのオブジェクトに限られます。

オブジェクトイベントの利用法としては、オブジェクトのプロパティから『グローバルオブジェクト』に設定したオブジェクトを複数のフレームに挿入し、それにオブジェクトイベントを記述すれば、イベントは同オブジェクトが存在している複数のフレームで有効になるので、グローバルイベントと似た使い方ができます。
他には、自作した複雑な動作イベントを記述して、素材として配布すれば、他のユーザーはそのオブジェクトを自分のフレームへコピーするだけで利用できると言うウィジェット的な利用法もあろうかと思います。

■イベントの実行順
イベントはどのイベントが先に実行されるのか、という順番が結構重要な要素となります。意図した順序と違って実行されると、正しい結果にならなかったり、1フレーム遅れて実行されてしまうなどの問題が発生します。
同じイベントエディタ内での順序であれば、ドラッグするなどして入れ替えれば済みますが、3つのイベントそれぞれに分散して記述している場合、各イベントエディタ間での順序の変更は不可能なので注意が必要です。

ご紹介した3つのイベントエディタのイベントの実行順は以下のようになっています。

1.フレームイベント
2.グローバルイベント
3.オブジェクトイベント

例えば、グローバルイベントに入力イベントを記述し、フレームイベントにそれに対する動作結果を記述していると、入力に対する動作結果は次のイベントループで行われることとなり、最低1フレームの遅延が発生することになります。

■オブジェクトイベント間の実行順
同じフレーム内で、複数の異なるオブジェクトにそれぞれオブジェクトイベントを設定している場合、それぞれのオブジェクトイベント間の実行順はどうなるでしょうか?
答えは『フレームにオブジェクトを挿入した順番』です。
cf25_blog_2015-08-09_objectevent3
フレームにオブジェクトを挿入した順番は、イベントの『オブジェクトを作成』アクションで、オブジェクトを選択する時のリストで確認することができます。
この順番は変更することができませんので、最初に順番を気にせず挿入して、後でオブジェクトイベントを記述しようとされた場合は、まずこの順番をご確認ください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

Time limit is exhausted. Please reload CAPTCHA.