イベントグループの活用方法
ふむ…どっちが頭か分かるでござるかな?
ここ数日の記事だけ見ると
猫ブログにしか見えなくなっている気がするので、今日はゲームの話をメインで。
今日はイベントグループの話です。
ある程度触っている方はお馴染みのイベントグループ。
上の画像だと「ペナルティ」「アクション」とある、各イベント行を括っている部分ですね。
今まではこのイベントグループはただ見やすくする為だけに使っていたのですが、こいつを使えば簡単に動作の指定を出来る事に気づきました。
試しにこんな画面を作ってみます。
人型が主人公。左右移動が出来ます。
右のスライムさんは左右、或いは重力を無視して上下に移動する二つの行動パターンを設定しています。
上がスライムさんの行動を制御するプログラムです。
分かりにくいですが、イベントグループ「ペナルティ」に含まれる「動作1」は左右移動をアホのように繰り返す行動パターンです。
対して、グループ「アクション」に含まれる「動作2」は上下移動をひたすら繰り返す気の触れた行動パターンです。
で、イベント行の⑧~⑩で、それぞれ
・フレーム開始時点の行動
・キーボードのCキーを押した時の行動
・キーボードのXキーを押した時の行動
をそれぞれ制御しています。
次に、両イベントグループの中身を見てみます。
「ペナルティ」に含まれる内容は、
・左右移動をひたすら繰り返すように行動をチェンジ。
・主人公と衝突すると、主人公は死ぬよ
「アクション」に含まれる内容は、
・上下移動をひたすら繰り返すように行動をチェンジ。
という内容です。「ペナルティ」にのみ、スライムとの当たり判定を設定しています。
で、このイベント内容でゲームを実行するとどうなるか、という事ですが、
イベント行⑧で、フレーム開始時点では「ペナルティ」の内容を反映していますので、ゲーム開始時点ではスライムさんは左右移動を繰り返しています。
主人公と接触すると、哀れ、主人公は即死します。
フレーム開始後、Cキーを押すと、「ペナルティ」に含まれる内容は無視され、「アクション」に含まれる内容に切り替わります。
つまり、左右移動を止め、Cキーを押した時点から上下運動に切り替わるわけです。
そして、「アクション」には主人公との接触を判定するイベントを記述していませんから、主人公とスライムさんが接触しても主人公は死にません。
行動だけでなく、接触判定に関してもきっちりと内容が判定されています。
いかがでしょうか?このイベントグループを使った制御方法の利点は、
フラグや変数を使わずに行動を切り替えられる事
にあると思います。
ゲームを作りこんでいくと、どうしても無駄に変数やフラグの種類が多くなっていき、管理が出来なくなりがちですが、この方法ならグループ名を工夫してやれば、視覚的にも分かりやすく管理出来るんではないでしょうか。
と、今日はこんなところで。
御閲覧ありがとうございました。