RPGツクール2000/自作戦闘【サイトトップへ戻る】
ピクチャー弾丸を飛ばす/敵も弾丸発射
■発射前に壁の有無を確認する
(更新:2020/07/05)


ショートカット
■コモンイベント「敵弾:壁確認」の設定
■弾丸処理イベントに追加設定
■補足


  
■コモンイベント「敵弾:壁確認」の設定

敵キャラと主人公との間に壁があるかどうかを調べ、
壁が無かった時のみ敵が弾丸を発射するようにします。

壁があるかどうかを調べる方法は、弾丸を実際に発射した時と同じ処理を実行し、
壁の地形IDに当たるかどうかを調べます。

監視イベントを追加でもコモンイベント「敵弾:壁確認」を設定していますが、
設定内容は監視イベントを追加の物と同じです。
既に監視イベントを追加で設定済みの場合は、新たに設定する必要はありません。

なお…
◆変数の操作:[0005:X座標]加算,変数[0169]の値
◆変数の操作:[0006:Y座標]加算,変数[0170]の値
の設定は、画面スクロールの設定がある場合のみ設定してください。

※マップによって、画面スクロールがある場合と無い場合がある時には、
 上記変数を設定したタイプと設定していないタイプの両方を設定し、
 マップの状況に応じて使い分けてください。


■コモンイベント「敵弾:壁確認」

イベント開始条件:呼び出されたときのみ

イベント実行内容はまず下記の設定を行ってください。
◆注釈:------------------------------
:  :▼00
:  : 

◆変数の操作:[0019:敵弾壁確認:移動量]代入,0
◆条件分岐:変数[0019:敵弾壁確認:移動量]がV[0002]以上
 ◆イベント処理の中断
 ◆
:分岐終了
◆変数の操作:[0015:敵弾壁確認:位置X]加算,変数[0017]の値
◆変数の操作:[0016:敵弾壁確認:位置Y]加算,変数[0018]の値
◆変数の操作:[0011:敵弾:当たり確認X]代入,変数[0015]の値
◆変数の操作:[0012:敵弾:当たり確認Y]代入,変数[0016]の値
◆変数の操作:[0011:敵弾:当たり確認X]減算,主人公の画面X
◆変数の操作:[0012:敵弾:当たり確認Y]減算,主人公の画面Y
◆変数の操作:[0012:敵弾:当たり確認Y]加算,8
◆変数の操作:[0011〜0012]除算,8
◆条件分岐:変数[0011:敵弾:当たり確認X]が0
 ◆条件分岐:変数[0012:敵弾:当たり確認Y]が0
  ◆イベント処理の中断
  ◆
 :分岐終了
 ◆
:分岐終了
◆変数の操作:[0005:X座標]代入,変数[0015]の値
◆変数の操作:[0006:Y座標]代入,変数[0016]の値
◆変数の操作:[0005:X座標]加算,変数[0169]の値<画面スクロールがあるのみ設定
◆変数の操作:[0006:Y座標]加算,変数[0170]の値

◆変数の操作:[0005〜0006]除算,16
◆指定位置の地形ID取得:(V[0005],V[0006]),[0007:ID]
◆条件分岐:変数[0007:ID]が2
 ◆イベント処理の中断
 ◆
:分岐終了



注釈:00の設定が終わりましたら、
注釈:00の設定をコピーして、すぐ下に貼り付けて、
黄色の部分を修正してください。
◆注釈:------------------------------
:  :▼00
:  : 

◆変数の操作:[0019:敵弾壁確認:移動量]代入,0
◆条件分岐:変数[0019:敵弾壁確認:移動量]がV[0002]以上
 ◆イベント処理の中断
 ◆
:分岐終了
◆変数の操作:[0015:敵弾壁確認:位置X]加算,変数[0017]の値
◆変数の操作:[0016:敵弾壁確認:位置Y]加算,変数[0018]の値
◆変数の操作:[0011:敵弾:当たり確認X]代入,変数[0015]の値
◆変数の操作:[0012:敵弾:当たり確認Y]代入,変数[0016]の値
◆変数の操作:[0011:敵弾:当たり確認X]減算,主人公の画面X
◆変数の操作:[0012:敵弾:当たり確認Y]減算,主人公の画面Y
◆変数の操作:[0012:敵弾:当たり確認Y]加算,8
◆変数の操作:[0011〜0012]除算,8
◆条件分岐:変数[0011:敵弾:当たり確認X]が0
 ◆条件分岐:変数[0012:敵弾:当たり確認Y]が0
  ◆イベント処理の中断
  ◆
 :分岐終了
 ◆
:分岐終了
◆変数の操作:[0005:X座標]代入,変数[0015]の値
◆変数の操作:[0006:Y座標]代入,変数[0016]の値
◆変数の操作:[0005:X座標]加算,変数[0169]の値
◆変数の操作:[0006:Y座標]加算,変数[0170]の値

◆変数の操作:[0005〜0006]除算,16
◆指定位置の地形ID取得:(V[0005],V[0006]),[0007:ID]
◆条件分岐:変数[0007:ID]が2
 ◆イベント処理の中断
 ◆
:分岐終了

◆注釈:------------------------------<上の設定をコピー
:  :▼01
:  : 

◆変数の操作:[0019:敵弾壁確認:移動量]加算,1
◆条件分岐:変数[0019:敵弾壁確認:移動量]がV[0002]以上
 ◆イベント処理の中断
 ◆
:分岐終了
◆変数の操作:[0015:敵弾壁確認:位置X]加算,変数[0017]の値
◆変数の操作:[0016:敵弾壁確認:位置Y]加算,変数[0018]の値
◆変数の操作:[0011:敵弾:当たり確認X]代入,変数[0015]の値
◆変数の操作:[0012:敵弾:当たり確認Y]代入,変数[0016]の値
◆変数の操作:[0011:敵弾:当たり確認X]減算,主人公の画面X
◆変数の操作:[0012:敵弾:当たり確認Y]減算,主人公の画面Y
◆変数の操作:[0012:敵弾:当たり確認Y]加算,8
◆変数の操作:[0011〜0012]除算,8
◆条件分岐:変数[0011:敵弾:当たり確認X]が0
 ◆条件分岐:変数[0012:敵弾:当たり確認Y]が0
  ◆イベント処理の中断
  ◆
 :分岐終了
 ◆
:分岐終了
◆変数の操作:[0005:X座標]代入,変数[0015]の値
◆変数の操作:[0006:Y座標]代入,変数[0016]の値
◆変数の操作:[0005:X座標]加算,変数[0169]の値
◆変数の操作:[0006:Y座標]加算,変数[0170]の値

◆変数の操作:[0005〜0006]除算,16
◆指定位置の地形ID取得:(V[0005],V[0006]),[0007:ID]
◆条件分岐:変数[0007:ID]が2
 ◆イベント処理の中断
 ◆
:分岐終了


あとは注釈:01の設定をコピーして、すぐ下に貼り付け…を繰り返し、
注釈:20まで作成してください。


▲トップへ戻る▲


  
■弾丸処理イベントに追加設定

敵の弾丸を発射する時の設定で…
◆注釈:------------------------------
:  :▼発射!
:  : 
の注釈のすぐ上に以下のイベントを設定してください。

◆注釈:------------------------------
:  :▼発射前に壁を確認
:  : 

◆変数の操作:[0015:敵弾壁確認:位置X]代入,変数[0221]の値
◆変数の操作:[0016:敵弾壁確認:位置Y]代入,変数[0231]の値
◆変数の操作:[0017:敵弾壁確認:移動X±]代入,変数[0241]の値
◆変数の操作:[0018:敵弾壁確認:移動Y±]代入,変数[0242]の値
◆変数の操作:[0002:移動距離]代入,20
◆イベントの呼び出し:敵弾:壁の確認
◆条件分岐:変数[0007:ID]が2
 ◆指定ラベルへ飛ぶ:10番
 ◆
:分岐終了

◆注釈:------------------------------
:  :▼発射!
:  : 



なお、敵弾丸02の場合は以下のような設定になります。

◆変数の操作:[0015:敵弾壁確認:位置X]代入,変数[0222]の値
◆変数の操作:[0016:敵弾壁確認:位置Y]代入,変数[0232]の値
◆変数の操作:[0017:敵弾壁確認:移動X±]代入,変数[0243]の値
◆変数の操作:[0018:敵弾壁確認:移動Y±]代入,変数[0244]の値
◆変数の操作:[0002:移動距離]代入,20
◆イベントの呼び出し:敵弾:壁の確認
◆条件分岐:変数[0007:ID]が2
 ◆指定ラベルへ飛ぶ:11番
 ◆
:分岐終了


▲トップへ戻る▲


  
■補足

コモンイベント「敵弾:壁確認」の設定では、同じ処理を繰り返しに設定していますが、
この処理をイベントコマンドのラベルの設定繰り返し処理を使ってループさせる設定は、
設定しないようにしてください。
ループ処理を設定にすると処理落ちの原因になります。


▲トップへ戻る▲

YADOTトップ  このサイトは何?  気紛れな空間へ戻る  メール