過去ブログの転載です。
敵が2秒おきにビームを放ってくるようにします。ビームは前回主人公が使えるようになったビームと同じものとします。基本的に、敵が炎を放ってくる処理の使い回しをします。
イベント「ビーム発射」(マップイベント、開始条件:定期的に並列処理する)
◆ウェイト:2.0秒
◆条件分岐:変数[0022]が999999以外
◆スイッチの操作:[0009:敵:ビーム発射]をONにする
◆効果音の演奏:アップ
◆キャラクターのフラッシュ:EV0002,1.0秒(W)(全部31)
◆変数の操作:[0018:敵:ビームx]代入,EV0002のX座標
◆変数の操作:[0019:敵:ビームy]代入,EV0002のY座標
◆変数の操作:[0020:敵:ビーム向き]代入,EV0002の向き
◆変数の操作:[0146:敵:ビーム残りマス数]代入,20
◆条件分岐:変数[0020:敵:ビーム向き]が2
◆戦闘アニメの表示:ビーム↓,EV0002(ウェイトなし)
◆
:分岐終了
◆条件分岐:変数[0020:敵:ビーム向き]が4
◆戦闘アニメの表示:ビーム←,EV0002(ウェイトなし)
◆
:分岐終了
◆条件分岐:変数[0020:敵:ビーム向き]が6
◆戦闘アニメの表示:ビーム→,EV0002(ウェイトなし)
◆
:分岐終了
◆条件分岐:変数[0020:敵:ビーム向き]が8
◆戦闘アニメの表示:ビーム↑,EV0002(ウェイトなし)
◆
:分岐終了
◆繰り返し処理
◆条件分岐:変数[0020:敵:ビーム向き]が2
◆変数の操作:[0019:敵:ビームy]加算,1
◆
:分岐終了
◆条件分岐:変数[0020:敵:ビーム向き]が4
◆変数の操作:[0019:敵:ビームx]減算,1
◆
:分岐終了
◆条件分岐:変数[0020:敵:ビーム向き]が6
◆変数の操作:[0019:敵:ビームx]加算,1
◆
:分岐終了
◆条件分岐:変数[0020:敵:ビーム向き]が8
◆変数の操作:[0019:敵:ビームy]減算,1
◆
:分岐終了
◆指定位置の地形ID取得:(V[0018],V[0019]),[0017:地形ID]
◆条件分岐:変数[0017:地形ID]が1以外
◆繰り返し処理の中断
◆
:分岐終了
◆現在の場所を記憶:[0147],[0147],[0148]
◆条件分岐:変数[0018:敵:ビームx]がV[0147]と同値
◆条件分岐:変数[0019:敵:ビームy]がV[0148]と同値
◆効果音の演奏:しびれ2
◆キャラクターのフラッシュ:主人公,0.5秒(赤31緑0青0強さ31、ウェイトなし)
◆キャラクターの動作指定:主人公,ジャンプ開始,180度方向転換,一歩前進,ジャンプ終了
◆HPの増減:メンバー全員のHPを5減らす
◆繰り返し処理の中断
◆
:分岐終了
◆
:分岐終了
◆変数の操作:[0146:敵:ビーム残りマス数]減算,1
◆条件分岐:変数[0146:敵:ビーム残りマス数]が0以下
◆繰り返し処理の中断
◆
:分岐終了
◆
:以上繰り返し
◆スイッチの操作:[0009:敵:ビーム発射]をOFFにする
◆
:分岐終了
◆
敵2番(ダメージ量は変数22番が管理)がビームを放つこととします。長いけど半分以上前回と同じスタイルです。ほとんど変数を変えただけ。変数18番、19番、20番がそれぞれ敵2番のX座標、Y座標、向きで、変数146番がビームの残り進み歩数、変数147番、148番はそれぞれ「主人公:x」「主人公:y」という主人公座標の変数です。地形IDを取得するための変数は前回同様変数17番に入れています。
まず2秒のウェイトを入れ、敵2番が生きていたら(ダメージ量が999999でなければ)、ビーム発射の処理を行います。スイッチ9番「敵:ビーム発射」をONにします。このスイッチがONになっている間は敵が停止するようにします。チャージのためです。敵2番の4ページ目をコピーして5ページ目を作り、出現条件を「敵:ビーム発射」がON、移動タイプを移動しないに変更してください。他はいじらなくて良いです。これで、ビームのチャージ中は5ページ目になり、移動しなくなります。
1秒間経ったあと、ビーム発射の処理が始まります。ビーム発射中主人公を動けなくする場合は、ここで新たにスイッチを作ってONにし、そのスイッチを条件に2ページ目を作ってそこにビームの処理を作ると良いでしょう。開始条件を自動的に始まるにすることで、主人公を動けなくさせます。
敵の座標、向きを変数に入れたら、前回主人公が撃ったビームの処理をそのまま使い回します。変数の番号や、戦闘アニメの表示キャラなどを変え忘れないように注意しましょう。しかし、主人公も戦闘アニメの表示を行う攻撃が出来る場合は、ビーム発射中に主人公が攻撃することで戦闘アニメが消えてしまう可能性がありますので、出来れば敵の攻撃は戦闘アニメにしない方が良いと思います。
ビームを貫通させないため、地形が1番(草原)以外だと中断するのも同じです。その後、主人公がビームに当たっているかを判定するため、主人公の現在座標を変数に入れ、ビームの座標と等しいか調べます。もし等しければ、主人公にダメージを与えてビームの処理を中断します。主人公が放つビームと異なるところはこれぐらいです。
最後に「敵:ビーム発射」をOFFすることで、敵が再び動き出します。