縦スクロールシューティング13

サンプルの解説:弾の発射イベント1

イベントグループ「Shot」の働き

Init(初期設定)の次は「Shot」というイベントグループに処理が移ります。ここでの処理は「プレイヤーがボタンを押すと弾を発射(新規作成)します」というもの。まずイベントエディタからどんなイベントが並んでいるか見てみましょう。

イベントエディタから

イベントエディタから



最初に「single」と「auto」という二つのオブジェクトグループに注目してください。イベントグループは両方共初期状態では「非アクティブ」に指定してあります。これはゲーム開始時にプレイヤーに「シングルショット(弾の連射はボタン連打をプレイヤーに自分でやってもらう)」と「オート(ボタン押しっぱなしにするだけで自動連射)」というどちらかを選んでもらい、その結果次第でどちらかのオブジェクトグループをアクティブにするか決定してます。そしてこの「どちらかをアクティブにする」という処理はすでに「Init」で行っています。タイトル画面とゲーム実行画面はフレームを分けてあるのでタイトル画面で得たプレイヤーの決定を、フレームが移動した後も保持させなければならないのですが、この決定はグローバル変数を使って値を保持させています。このように各フレーム間で値を共通化して利用したい場合は「グローバル変数」を利用します。そしてグローバル変数の状態次第で何をアクティブにする、しないを決定してるというわけです。

タイトル画面でプレイヤーに選択させる

タイトル画面でプレイヤーに選択させる

グローバル変数を評価する

グローバル変数を評価する

実際に分けて何やってるかというと、「single」の方は「ボタンを押したとき~」という処理を、「auto」では「ボタンを押している間~」という処理を行っています。内部フラグはボタン操作検出用のタイムディレイと弾の発射用タイムディレイの二つの意味を兼ねています。具体的には「single」の場合、ボタンを一度押してそこから一回リリースしてやらないとボタン押しっぱなしでは次の弾が発射されません。「auto」は押し続けても勝手に弾が発射されるわけですが、次弾を発射するタイミングがあらかじめ設定されているので一回弾を発射したら「何秒(何フレーム)目に次の弾を発射できるよ!」という設定値に達したら実際に弾が発射されます・・でその管理というか許可・不許可を示しているのが内部フラグ0の状態と役割ってわけです。

シングルとオート

シングルとオート