RPGツクール2000/自作戦闘
ピクチャー弾丸を飛ばす
■当たり判定の処理を追加する
(更新:2009/08/29)


ピクチャー弾丸を飛ばすイベントに、
マップイベントに対する当たり判定の処理のイベントを追加します。

タルなどの障害物となるマップイベントを設定する場合は、
移動しない敵キャラとして設定してください。


このページは続きとなっているページです
ピクチャー弾丸の基礎ページをご覧の上で
このページをご覧ください。
【ピクチャー弾丸の基礎ページを開く】

この色の部分はピクチャー弾丸を飛ばすのページにあった部分です。



☆当たり判定を判断する方法
ピクチャーの弾丸が敵キャラに当たっているかどうかを判断させる方法は、
以下の3つがあります。



■マス座標で当たり判定
敵キャラのX座標、Y座標を変数に取得して、
敵キャラに弾丸が当たっているかどうかを判断します。
ピクチャー弾丸の設定では使い勝手が悪いので、
今回の制作では使用しません。



■イベントIDで当たり判定
イベントコマンド:指定位置のイベントID取得を使用して、
弾丸がいるマスのイベントIDを取得し、
取得したイベントIDが敵のイベントIDである時には、
敵キャラに当たったと判断します。
アクションRPGの当たり判定では、よく使われている設定方法です。
なお、ピクチャー弾丸の当たり判定では、
移動中の敵キャラへの命中率が下がると言う欠点があります。※詳しくは後ほど説明。



■画面位置で当たり判定
敵キャラの画面X、画面Y弾丸の位置を比較して、
敵キャラに弾丸が重なっている時に「当たった」と判断します。
移動中の敵キャラでも正確に当たり判定が行えます行えますが、
敵1体ごとに当たり判定の処理を設定する必要があり、
たくさんの敵キャラがいる場合には、あまりお勧めできません。
なお、敵キャラ(ターゲット)がピクチャーである時には、この設定方法になります。



☆イベントIDでの当たり判定に関して
イベントIDで当たり判定は、設定が楽に行える反面、
移動している途中の敵キャラの当たり判定がうまく行えない事があります。

左図のように、敵キャラが止まっている時には、
主人公から発射された弾丸(黄色の矢印)は当たります。
しかし敵キャラが主人公がいる方向の垂直方向に移動しますと、
当たり判定のマスは次のマスへ移動しますので、
まだ前のマスに体が残っていても(黄色の矢印のように撃っても)、
敵キャラには当たらず、水色の矢印のように撃ちますと、
敵が赤いマスへ移動し終わってなくても、敵キャラに当たります。
弾丸と敵キャラが入れ替わるように移動しますと、
当たり判定が行われない事があります。

弾丸と敵キャラが入れ替わるために当たり判定が行われない部分は、
当たり判定を2重に設定する事で回避する事ができます。
実際にこのページのイベントIDで当たり判定の設定では、
当たり判定の部分を2重設定しています。



☆命中率について
命中率は、敵キャラの移動設定によって、大きく異なります。

基本的に主人公に近寄るなど、予測しやすい移動設定にしますと、命中率は上がります。
逆にランダム移動などの予測しにくい移動設定を多くしますと、命中率は下がります。

移動頻度の数字を小さくしますと、
敵キャラが停止している時間が長くなりますので、命中率は上がります。
逆に移動頻度の数字を大きくしますと、命中率は下がります。



☆イベントID取得 or 画面位置
基本的にイベントIDで当たり判定をお勧めします。

敵キャラの移動頻度を「」などにしますと、命中率が低くなりますので、
そのような時には画面位置で当たり判定で設定すると良いでしょう。
但し、画面位置で当たり判定の場合は、弾丸1発が移動するたびに、
敵キャラ1体1体の当たり判定を確認しますので、
大量に敵キャラを設定したい時大量の弾丸が移動するようにしたい時には、
画面位置で当たり判定の設定はお勧めできません。

敵キャラではない、移動しない障害物のマップイベントの当たり判定は、
イベントIDで当たり判定で処理した方が良いでしょう。

画面位置で当たり判定イベントIDで当たり判定の両方を設定する事もできますので、
敵キャラの当たり判定→画面位置で当たり判定
敵キャラではない当たり判定→イベントIDで当たり判定
と言った使い分けもできます。



☆敵キャラのイベントIDについて
敵キャラのイベントIDは、
他の敵キャラ以外のマップイベント(宝箱や階段)などよりも、
大きいイベントIDにしてください。

例えば、
イベントID0001番=敵キャラ1
イベントID0002番=階段イベント
イベントID0003番=敵キャラ2
イベントID0004番=宝箱イベント
イベントID0005番=看板イベント

などとなっている場合は、
イベントID0001番=階段イベント
イベントID0002番=宝箱イベント
イベントID0003番=看板イベント
イベントID0004番=敵キャラ1
イベントID0005番=敵キャラ2

と変えてください。
【バラバラのイベントIDを揃える手順を見る】

敵のイベントIDを他のイベントよりも大きいIDにしておく事で、
イベントIDが4以上の時には敵キャラと判断する
と言った設定を行う事ができます。

なお、変数[0009:最小敵イベントID]には、
マップ内で最も小さい敵のイベントIDを設定しておきます。



☆イベントID取得で当たり判定を設定
弾丸の位置のイベントIDを取得して、敵キャラの当たり判定を行います。
画面位置の当たり判定を設定する場合は、
 下記の☆画面位置で当たり判定を設定をご覧ください。

▼☆画面位置で当たり判定を設定の所まで移動



スイッチと変数の番号使用内容の一覧表です。

スイッチ
番号 名前 使用内容 初使用ページ
0001 システム起動 初期設定が終わったらON→弾丸処理実行。 基礎
0003 ダメージ処理 敵キャラの1ページを呼び出す時にON。 当たり判定
 
0011 弾丸移動中01 ONの時には弾丸01は移動中。 基礎
0012 弾丸移動中02 ONの時には弾丸02は移動中。 基礎
0013 弾丸移動中03 ONの時には弾丸03は移動中。 基礎

変数
番号 名前 使用内容 初使用ページ
0001 キー入力 決定キーが押されているかどうかを判断する時に使用。 基礎
0002 移動距離 ピクチャー弾丸が移動する距離(射程)を設定。 基礎
0003 X± 向きに合わせて1回の処理で移動するXの移動量を設定。 基礎
0004 Y± 向きに合わせて1回の処理で移動するYの移動量を設定。 基礎
0005 X座標 弾丸の位置のX座標を設定。 当たり判定
0006 Y座標 弾丸の位置のY座標を設定。 当たり判定
0007 ID 弾丸の位置の地形IDやイベントIDを取得。 当たり判定
0008 1ページ目 敵キャラの1ページ目を呼び出す時に使用。 当たり判定
0009 最小敵イベントID マップ内で最も小さい敵イベントIDを設定。 当たり判定
 
0021 キーカウント 弾丸が発射して、次の弾丸が発射するまでの間をカウント。 基礎
0022 無敵時間 主人公がダメージを受けた時の無敵時間を設定。-1以下=無敵。 当たり判定
 
0031 弾丸移動量01 発射時から1ずつ加算していき、
変数[0002:移動距離]以上の値になったら弾丸01を消去。
基礎
0032 弾丸移動量02 発射時から1ずつ加算していき、
変数[0002:移動距離]以上の値になったら弾丸02を消去。
基礎
0033 弾丸移動量03 発射時から1ずつ加算していき、
変数[0002:移動距離]以上の値になったら弾丸03を消去。
基礎
 
0041 弾丸01X 弾丸01のX位置を記憶。 基礎
0042 弾丸02X 弾丸02のX位置を記憶。 基礎
0043 弾丸03X 弾丸03のX位置を記憶。 基礎
0051 弾丸01Y 弾丸01のY位置を記憶。 基礎
0052 弾丸02Y 弾丸02のY位置を記憶。 基礎
0053 弾丸03Y 弾丸03のY位置を記憶。 基礎
 
0061 弾丸01X± 弾丸01の1回のXの移動量を記憶。 基礎
0062 弾丸02X± 弾丸02の1回のXの移動量を記憶。 基礎
0063 弾丸03X± 弾丸03の1回のXの移動量を記憶。 基礎
0071 弾丸01Y± 弾丸01の1回のYの移動量を記憶。 基礎
0072 弾丸02Y± 弾丸02の1回のYの移動量を記憶。 基礎
0073 弾丸03Y± 弾丸03の1回のYの移動量を記憶。 基礎
 
0081 弾丸01前のX座標 弾丸01の前のX座標を代入し、次の処理の時に使用。 当たり判定
0082 弾丸02前のX座標 弾丸02の前のX座標を代入し、次の処理の時に使用。 当たり判定
0083 弾丸03前のX座標 弾丸03の前のX座標を代入し、次の処理の時に使用。 当たり判定
0091 弾丸01前のY座標 弾丸01の前のY座標を代入し、次の処理の時に使用。 当たり判定
0092 弾丸02前のY座標 弾丸02の前のY座標を代入し、次の処理の時に使用。 当たり判定
0093 弾丸03前のY座標 弾丸03の前のY座標を代入し、次の処理の時に使用。 当たり判定
 
0101 敵ダメージ01 敵キャラ01のダメージ量を設定。10以上で敵キャラ01が消滅。 当たり判定
0102 敵ダメージ02 敵キャラ02のダメージ量を設定。10以上で敵キャラ01が消滅。 当たり判定

【スイッチ・変数の一覧表を開く】



初期設定に敵HPを初期化するイベントなどを追加します。

■マップイベント「初期設定」
▼1ページ目
イベント出現条件:なし
イベント開始条件:自動的に始まる
◆ピクチャーの表示:1,dan(160,120)(透明度:100%)
◆ピクチャーの表示:2,dan(160,120)(透明度:100%)
◆ピクチャーの表示:3,dan(160,120)(透明度:100%)
◆変数の操作:[0008:1ページ目]代入,1
◆変数の操作:[0009:最小敵イベントID]代入,2<このマップの最小の敵イベントIDを設定
◆変数の操作:[0101〜0102]代入,0
<敵のダメージ量を初期化します
◆スイッチの操作:[0001:システム起動]をONにする


▼2ページ目
イベント出現条件:スイッチ[0001:システム起動]がON
イベント開始条件:決定キーが押されたとき
イベント実行内容の設定は不要です。


弾丸処理に敵の当たり判定を行うイベントを追加します。

■コモンイベント「弾丸処理」
出現条件スイッチ:[0001:システム起動]
イベント開始条件:定期的に並列処理する
◆ラベルの設定:1番
◆注釈:------------------------------------------------------------
:  :弾丸発射
:  : 

◆キー入力の処理:[0001:キー入力](決定/オプション:OFF)
◆ウェイト:0.0秒
◆条件分岐:変数[0001:キー入力]が0
 ◆キー入力の処理:[0001:キー入力](決定/オプション:OFF)
 ◆
:分岐終了
◆条件分岐:変数[0021:キーカウント]が0より小さい
 ◆変数の操作:[0001:キー入力]代入,0
 ◆
:分岐終了
◆条件分岐:変数[0001:キー入力]が5
 ◆変数の操作:[0003〜0004]代入,0
 ◆条件分岐:主人公が左に向いている
  ◆変数の操作:[0003:X±]代入,-4
  ◆
 :分岐終了
 ◆条件分岐:主人公が右に向いている
  ◆変数の操作:[0003:X±]代入,4
  ◆
 :分岐終了
 ◆条件分岐:主人公が上に向いている
  ◆変数の操作:[0004:Y±]代入,-4
  ◆
 :分岐終了
 ◆条件分岐:主人公が下に向いている
  ◆変数の操作:[0004:Y±]代入,4
  ◆
 :分岐終了
 ◆条件分岐:スイッチ[0011:弾丸移動中01]がOFF
  ◆スイッチの操作:[0011:弾丸移動中01]をONにする
  ◆変数の操作:[0021:キーカウント]代入,-10
  ◆変数の操作:[0031:弾丸移動量01]代入,0
  ◆変数の操作:[0041:弾丸01X]代入,主人公の画面X
  ◆変数の操作:[0051:弾丸01Y]代入,主人公の画面Y
  ◆変数の操作:[0051:弾丸01Y]減算,8
  ◆変数の操作:[0061:弾丸01X±]代入,変数[0003]の値
  ◆変数の操作:[0071:弾丸01Y±]代入,変数[0004]の値
  ◆変数の操作:[0081:弾丸01前のX座標]代入,主人公のX座標
  ◆変数の操作:[0091:弾丸01前のY座標]代入,主人公のY座標

  ◆効果音の演奏:打撃4
  ◆指定ラベルへ飛ぶ:2番
  ◆
 :分岐終了
 ◆条件分岐:スイッチ[0012:弾丸移動中02]がOFF
  ◆スイッチの操作:[0012:弾丸移動中02]をONにする
  ◆変数の操作:[0021:キーカウント]代入,-10
  ◆変数の操作:[0032:弾丸移動量02]代入,0
  ◆変数の操作:[0042:弾丸02X]代入,主人公の画面X
  ◆変数の操作:[0052:弾丸02Y]代入,主人公の画面Y
  ◆変数の操作:[0052:弾丸02Y]減算,8
  ◆変数の操作:[0062:弾丸02X±]代入,変数[0003]の値
  ◆変数の操作:[0072:弾丸02Y±]代入,変数[0004]の値
  ◆変数の操作:[0082:弾丸02前のX座標]代入,主人公のX座標
  ◆変数の操作:[0092:弾丸02前のY座標]代入,主人公のY座標

  ◆効果音の演奏:打撃4
  ◆指定ラベルへ飛ぶ:2番
  ◆
 :分岐終了
 ◆条件分岐:スイッチ[0013:弾丸移動中03]がOFF
  ◆スイッチの操作:[0013:弾丸移動中03]をONにする
  ◆変数の操作:[0021:キーカウント]代入,-10
  ◆変数の操作:[0033:弾丸移動量03]代入,0
  ◆変数の操作:[0043:弾丸03X]代入,主人公の画面X
  ◆変数の操作:[0053:弾丸03Y]代入,主人公の画面Y
  ◆変数の操作:[0053:弾丸03Y]減算,8
  ◆変数の操作:[0063:弾丸03X±]代入,変数[0003]の値
  ◆変数の操作:[0073:弾丸03Y±]代入,変数[0004]の値
  ◆変数の操作:[0083:弾丸03前のX座標]代入,主人公のX座標
  ◆変数の操作:[0093:弾丸03前のY座標]代入,主人公のY座標

  ◆効果音の演奏:打撃4
  ◆
 :分岐終了
 ◆ラベルの設定:2番
 ◆
:分岐終了
◆注釈:------------------------------------------------------------
:  :弾丸移動
:  : 

◆変数の操作:[0002:移動距離]代入,20
◆変数の操作:[0021〜0033]加算,1
◆条件分岐:スイッチ[0011:弾丸移動中01]がON(オプション:ON)
 ◆条件分岐:変数[0031:弾丸移動量01]がV[0002]以上
  ◆スイッチの操作:[0011:弾丸移動中01]をOFFにする
  ◆
 :分岐終了
 ◆指定位置のイベントID取得:(V[0081],V[0091]),[0007:ID]
 ◆条件分岐:変数[0007:ID]がV[0009]以上<前の弾丸1の位置に敵イベントがある時
  ◆スイッチの操作:[0003:ダメージ処理]をONにする
  ◆イベントの呼び出し:V[7][V[8]]<弾丸1の位置にあるイベントの1ページ目を呼び出す
  ◆スイッチの操作:[0003:ダメージ処理]をOFFにする
  ◆スイッチの操作:[0011:弾丸移動中01]をOFFにする<弾丸1を消去
  ◆指定ラベルへ飛ぶ:3番
  ◆
 :分岐終了

 ◆変数の操作:[0041:弾丸01X]加算,変数[0061]の値
 ◆変数の操作:[0051:弾丸01Y]加算,変数[0071]の値
 ◆ピクチャーの移動:1,(V[0041],V[0051]),0.0秒
(透明度:0%)
 ◆変数の操作:[0005:X座標]代入,変数[0041]の値
 ◆変数の操作:[0006:Y座標]代入,変数[0051]の値
 ◆変数の操作:[0005〜0006]除算,16
 ◆指定位置のイベントID取得:(V[0005],V[0006]),[0007:ID]
 ◆条件分岐:変数[0007:ID]がV[0009]以上<弾丸1の位置に敵イベントがある時
  ◆スイッチの操作:[0003:ダメージ処理]をONにする
  ◆イベントの呼び出し:V[7][V[8]]<弾丸1の位置にあるイベントの1ページ目を呼び出す
  ◆スイッチの操作:[0003:ダメージ処理]をOFFにする
  ◆スイッチの操作:[0011:弾丸移動中01]をOFFにする<弾丸1を消去
  ◆
 :分岐終了
 ◆変数の操作:[0081:弾丸01前のX座標]代入,変数[0005]の値
 ◆変数の操作:[0091:弾丸01前のY座標]代入,変数[0006]の値
 ◆ラベルの設定:3番
 
:それ以外の場合
 ◆ピクチャーの移動:1,(160,120),0.0秒(透明度:100%)
 ◆
:分岐終了
◆条件分岐:スイッチ[0012:弾丸移動中02]がON(オプション:ON)
 ◆条件分岐:変数[0032:弾丸移動量02]がV[0002]以上
  ◆スイッチの操作:[0012:弾丸移動中02]をOFFにする
  ◆
 :分岐終了
 ◆指定位置のイベントID取得:(V[0082],V[0092]),[0007:ID]
 ◆条件分岐:変数[0007:ID]がV[0009]以上<前の弾丸2の位置に敵イベントがある時
  ◆スイッチの操作:[0003:ダメージ処理]をONにする
  ◆イベントの呼び出し:V[7][V[8]]<弾丸2の位置にあるイベントの1ページ目を呼び出す
  ◆スイッチの操作:[0003:ダメージ処理]をOFFにする
  ◆スイッチの操作:[0012:弾丸移動中02]をOFFにする<弾丸2を消去
  ◆指定ラベルへ飛ぶ:4番
  ◆
 :分岐終了

 ◆変数の操作:[0042:弾丸02X]加算,変数[0062]の値
 ◆変数の操作:[0052:弾丸02Y]加算,変数[0072]の値
 ◆ピクチャーの移動:2,(V[0042],V[0052]),0.0秒
(透明度:0%)
 ◆変数の操作:[0005:X座標]代入,変数[0042]の値
 ◆変数の操作:[0006:Y座標]代入,変数[0052]の値
 ◆変数の操作:[0005〜0006]除算,16
 ◆指定位置のイベントID取得:(V[0005],V[0006]),[0007:ID]
 ◆条件分岐:変数[0007:ID]がV[0009]以上<弾丸2の位置に敵イベントがある時
  ◆スイッチの操作:[0003:ダメージ処理]をONにする
  ◆イベントの呼び出し:V[7][V[8]]<弾丸2の位置にあるイベントの1ページ目を呼び出す
  ◆スイッチの操作:[0003:ダメージ処理]をOFFにする
  ◆スイッチの操作:[0012:弾丸移動中02]をOFFにする<弾丸2を消去
  ◆
 :分岐終了
 ◆変数の操作:[0082:弾丸02前のX座標]代入,変数[0005]の値
 ◆変数の操作:[0092:弾丸02前のY座標]代入,変数[0006]の値
 ◆ラベルの設定:4番
 
:それ以外の場合
 ◆ピクチャーの移動:2,(160,120),0.0秒(透明度:100%)
 ◆
:分岐終了
◆条件分岐:スイッチ[0013:弾丸移動中03]がON(オプション:ON)
 ◆条件分岐:変数[0033:弾丸移動量03]がV[0002]以上
  ◆スイッチの操作:[0013:弾丸移動中03]をOFFにする
  ◆
 :分岐終了
 ◆指定位置のイベントID取得:(V[0083],V[0093]),[0007:ID]
 ◆条件分岐:変数[0007:ID]がV[0009]以上<弾丸3の位置に敵イベントがある時
  ◆スイッチの操作:[0003:ダメージ処理]をONにする
  ◆イベントの呼び出し:V[7][V[8]]<弾丸3の位置にあるイベントの1ページ目を呼び出す
  ◆スイッチの操作:[0003:ダメージ処理]をOFFにする
  ◆スイッチの操作:[0013:弾丸移動中03]をOFFにする<弾丸3を消去
  ◆指定ラベルへ飛ぶ:5番
  ◆
 :分岐終了

 ◆変数の操作:[0043:弾丸03X]加算,変数[0063]の値
 ◆変数の操作:[0053:弾丸03Y]加算,変数[0073]の値
 ◆ピクチャーの移動:3,(V[0043],V[0053]),0.0秒
(透明度:0%)
 ◆変数の操作:[0005:X座標]代入,変数[0043]の値
 ◆変数の操作:[0006:Y座標]代入,変数[0053]の値
 ◆変数の操作:[0005〜0006]除算,16
 ◆指定位置のイベントID取得:(V[0005],V[0006]),[0007:ID]
 ◆条件分岐:変数[0007:ID]がV[0009]以上<弾丸3の位置に敵イベントがある時
  ◆スイッチの操作:[0003:ダメージ処理]をONにする
  ◆イベントの呼び出し:V[7][V[8]]<弾丸3の位置にあるイベントの1ページ目を呼び出す
  ◆スイッチの操作:[0003:ダメージ処理]をOFFにする
  ◆スイッチの操作:[0013:弾丸移動中03]をOFFにする<弾丸3を消去
  ◆
 :分岐終了
 ◆変数の操作:[0083:弾丸03前のX座標]代入,変数[0005]の値
 ◆変数の操作:[0093:弾丸03前のY座標]代入,変数[0006]の値

 ◆ラベルの設定:5番
 ◆
:それ以外の場合
 ◆ピクチャーの移動:3,(160,120),0.0秒(透明度:100%)
 ◆
:分岐終了
◆指定ラベルへ飛ぶ:1番


▼敵キャラの設定の所まで移動


  
☆画面位置で当たり判定を設定
敵キャラの画面位置から敵キャラの当たり判定を行います。



使用するスイッチと変数は以下の通りです。

スイッチ
番号 名前 使用内容 初使用ページ
0001 システム起動 初期設定が終わったらON→弾丸処理実行。 基礎
0003 ダメージ処理 敵キャラの1ページを呼び出す時にON。 当たり判定
 
0011 弾丸移動中01 ONの時には弾丸01は移動中。 基礎
0012 弾丸移動中02 ONの時には弾丸02は移動中。 基礎
0013 弾丸移動中03 ONの時には弾丸03は移動中。 基礎

変数
番号 名前 使用内容 初使用ページ
0001 キー入力 決定キーが押されているかどうかを判断する時に使用。 基礎
0002 移動距離 ピクチャー弾丸が移動する距離(射程)を設定。 基礎
0003 X± 向きに合わせて1回の処理で移動するXの移動量を設定。 基礎
0004 Y± 向きに合わせて1回の処理で移動するYの移動量を設定。 基礎
 
0021 キーカウント 弾丸が発射して、次の弾丸が発射するまでの間をカウント。 基礎
0022 無敵時間 主人公がダメージを受けた時の無敵時間を設定。-1以下=無敵。 当たり判定
 
0031 弾丸移動量01 発射時から1ずつ加算していき、
変数[0002:移動距離]以上の値になったら弾丸01を消去。
基礎
0032 弾丸移動量02 発射時から1ずつ加算していき、
変数[0002:移動距離]以上の値になったら弾丸02を消去。
基礎
0033 弾丸移動量03 発射時から1ずつ加算していき、
変数[0002:移動距離]以上の値になったら弾丸03を消去。
基礎
 
0041 弾丸01X 弾丸01のX位置を記憶。 基礎
0042 弾丸02X 弾丸02のX位置を記憶。 基礎
0043 弾丸03X 弾丸03のX位置を記憶。 基礎
0051 弾丸01Y 弾丸01のY位置を記憶。 基礎
0052 弾丸02Y 弾丸02のY位置を記憶。 基礎
0053 弾丸03Y 弾丸03のY位置を記憶。 基礎
 
0061 弾丸01X± 弾丸01の1回のXの移動量を記憶。 基礎
0062 弾丸02X± 弾丸02の1回のXの移動量を記憶。 基礎
0063 弾丸03X± 弾丸03の1回のXの移動量を記憶。 基礎
0071 弾丸01Y± 弾丸01の1回のYの移動量を記憶。 基礎
0072 弾丸02Y± 弾丸02の1回のYの移動量を記憶。 基礎
0073 弾丸03Y± 弾丸03の1回のYの移動量を記憶。 基礎
 
0101 敵ダメージ01 敵キャラ01のダメージ量を設定。10以上で敵キャラ01が消滅。 当たり判定
0102 敵ダメージ02 敵キャラ02のダメージ量を設定。10以上で敵キャラ01が消滅。 当たり判定
 
0121 X01 敵キャラ01の画面位置Xを代入し、当たり判定を確認。 当たり判定
0122 X02 敵キャラ02の画面位置Xを代入し、当たり判定を確認。 当たり判定
0141 Y01 敵キャラ01の画面位置Yを代入し、当たり判定を確認。 当たり判定
0142 Y02 敵キャラ02の画面位置Yを代入し、当たり判定を確認。 当たり判定

【スイッチ・変数の一覧表を開く】



初期設定に敵HPを初期化するイベントを追加します。

なお、コモンイベントに設定していた弾丸処理は、
この初期設定2ページ目に移動します。
コモンイベント弾丸処理を設定しない理由は、
マップごとに敵キャラの数敵のイベントIDが異なるために、
どのマップでも同じ弾丸処理を動かすのが難しいためです。

■マップイベント「初期設定&弾丸処理」
▼1ページ目
イベント出現条件:なし
イベント開始条件:自動的に始まる
◆ピクチャーの表示:1,dan(160,120)(透明度:100%)
◆ピクチャーの表示:2,dan(160,120)(透明度:100%)
◆ピクチャーの表示:3,dan(160,120)(透明度:100%)
◆変数の操作:[0101〜0102]代入,0
<敵のダメージ量を初期化します
◆スイッチの操作:[0001:システム起動]をONにする


▼2ページ目
イベント出現条件:スイッチ[0001:システム起動]がON
イベント開始条件:定期的に並列処理する
※コモンイベント「弾丸処理」の設定をコピーする。
◆ラベルの設定:1番
◆注釈:------------------------------------------------------------
:  :弾丸発射
:  : 

◆キー入力の処理:[0001:キー入力](決定/オプション:OFF)
◆ウェイト:0.0秒
◆条件分岐:変数[0001:キー入力]が0
 ◆キー入力の処理:[0001:キー入力](決定/オプション:OFF)
 ◆
:分岐終了
◆条件分岐:変数[0021:キーカウント]が0より小さい
 ◆変数の操作:[0001:キー入力]代入,0
 ◆
:分岐終了
◆条件分岐:変数[0001:キー入力]が5
 ◆変数の操作:[0003〜0004]代入,0
 ◆条件分岐:主人公が左に向いている
  ◆変数の操作:[0003:X±]代入,-4
  ◆
 :分岐終了
 ◆条件分岐:主人公が右に向いている
  ◆変数の操作:[0003:X±]代入,4
  ◆
 :分岐終了
 ◆条件分岐:主人公が上に向いている
  ◆変数の操作:[0004:Y±]代入,-4
  ◆
 :分岐終了
 ◆条件分岐:主人公が下に向いている
  ◆変数の操作:[0004:Y±]代入,4
  ◆
 :分岐終了
 ◆条件分岐:スイッチ[0011:弾丸移動中01]がOFF
  ◆スイッチの操作:[0011:弾丸移動中01]をONにする
  ◆変数の操作:[0021:キーカウント]代入,-10
  ◆変数の操作:[0031:弾丸移動量01]代入,0
  ◆変数の操作:[0041:弾丸01X]代入,主人公の画面X
  ◆変数の操作:[0051:弾丸01Y]代入,主人公の画面Y
  ◆変数の操作:[0051:弾丸01Y]減算,8
  ◆変数の操作:[0061:弾丸01X±]代入,変数[0003]の値
  ◆変数の操作:[0071:弾丸01Y±]代入,変数[0004]の値
  ◆効果音の演奏:打撃4
  ◆指定ラベルへ飛ぶ:2番
  ◆
 :分岐終了
 ◆条件分岐:スイッチ[0012:弾丸移動中02]がOFF
  ◆スイッチの操作:[0012:弾丸移動中02]をONにする
  ◆変数の操作:[0021:キーカウント]代入,-10
  ◆変数の操作:[0032:弾丸移動量02]代入,0
  ◆変数の操作:[0042:弾丸02X]代入,主人公の画面X
  ◆変数の操作:[0052:弾丸02Y]代入,主人公の画面Y
  ◆変数の操作:[0052:弾丸02Y]減算,8
  ◆変数の操作:[0062:弾丸02X±]代入,変数[0003]の値
  ◆変数の操作:[0072:弾丸02Y±]代入,変数[0004]の値
  ◆効果音の演奏:打撃4
  ◆指定ラベルへ飛ぶ:2番
  ◆
 :分岐終了
 ◆条件分岐:スイッチ[0013:弾丸移動中03]がOFF
  ◆スイッチの操作:[0013:弾丸移動中03]をONにする
  ◆変数の操作:[0021:キーカウント]代入,-10
  ◆変数の操作:[0033:弾丸移動量03]代入,0
  ◆変数の操作:[0043:弾丸03X]代入,主人公の画面X
  ◆変数の操作:[0053:弾丸03Y]代入,主人公の画面Y
  ◆変数の操作:[0053:弾丸03Y]減算,8
  ◆変数の操作:[0063:弾丸03X±]代入,変数[0003]の値
  ◆変数の操作:[0073:弾丸03Y±]代入,変数[0004]の値
  ◆効果音の演奏:打撃4
  ◆
 :分岐終了
 ◆ラベルの設定:2番
 ◆
:分岐終了
◆注釈:------------------------------------------------------------
:  :弾丸移動
:  : 

◆変数の操作:[0002:移動距離]代入,20
◆変数の操作:[0021〜0033]加算,1
◆条件分岐:スイッチ[0011:弾丸移動中01]がON(オプション:ON)
 ◆条件分岐:変数[0031:弾丸移動量01]がV[0002]以上
  ◆スイッチの操作:[0011:弾丸移動中01]をOFFにする
  ◆
 :分岐終了
 ◆変数の操作:[0041:弾丸01X]加算,変数[0061]の値
 ◆変数の操作:[0051:弾丸01Y]加算,変数[0071]の値
 ◆ピクチャーの移動:1,(V[0041],V[0051]),0.0秒(透明度:0%)
 ◆変数の操作:[0121:X01]代入,敵キャラ01の画面X
 ◆変数の操作:[0141:Y01]代入,敵キャラ01の画面Y
 ◆変数の操作:[0122:X02]代入,敵キャラ02の画面X
 ◆変数の操作:[0142:Y02]代入,敵キャラ02の画面Y
 ◆変数の操作:[0141〜0142]減算,8<当たり判定の位置を敵キャラの足元から胸の位置まで上げる
 ◆変数の操作:[0121〜0122]減算,変数[0041]の値<弾丸のX位置を減算
 ◆変数の操作:[0141〜0142]減算,変数[0051]の値<弾丸のY位置を減算
 ◆変数の操作:[0121〜0142]除算,8
 ◆条件分岐:変数[0121:X01]が0<弾丸と敵01のX位置が「−7〜7」以内である時
  ◆条件分岐:変数[0141:Y01]が0<弾丸と敵01のY位置が「−7〜7」以内である時
   ◆スイッチの操作:[0003:ダメージ処理]をONにする
   ◆イベントの呼び出し:敵キャラ01[1]<敵キャラ01の1ページ目を呼び出す
   ◆スイッチの操作:[0003:ダメージ処理]をOFFにする
   ◆スイッチの操作:[0011:弾丸移動中01]をOFFにする
   ◆指定ラベルへ飛ぶ:3番
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆条件分岐:変数[0122:X02]が0<弾丸と敵02のX位置が「−7〜7」以内である時
  ◆条件分岐:変数[0142:Y02]が0<弾丸と敵02のY位置が「−7〜7」以内である時
   ◆スイッチの操作:[0003:ダメージ処理]をONにする
   ◆イベントの呼び出し:敵キャラ02[1]<敵キャラ02の1ページ目を呼び出す
   ◆スイッチの操作:[0003:ダメージ処理]をOFFにする
   ◆スイッチの操作:[0011:弾丸移動中01]をOFFにする
   ◆指定ラベルへ飛ぶ:3番
   ◆
  :分岐終了
  ◆
 :分岐終了

 ◆ラベルの設定:3番<設定する
 ◆
:それ以外の場合
 ◆ピクチャーの移動:1,(160,120),0.0秒(透明度:100%)
 ◆
:分岐終了
◆条件分岐:スイッチ[0012:弾丸移動中02]がON(オプション:ON)
 ◆条件分岐:変数[0032:弾丸移動量02]がV[0002]以上
  ◆スイッチの操作:[0012:弾丸移動中02]をOFFにする
  ◆
 :分岐終了
 ◆変数の操作:[0042:弾丸02X]加算,変数[0062]の値
 ◆変数の操作:[0052:弾丸02Y]加算,変数[0072]の値
 ◆ピクチャーの移動:2,(V[0042],V[0052]),0.0秒(透明度:0%)
 ◆変数の操作:[0121:X01]代入,敵キャラ01の画面Xこの色は弾丸1の設定をコピーした所
 ◆変数の操作:[0141:Y01]代入,敵キャラ01の画面Y 弾丸1の設定と違う所はこの色で表示
 ◆変数の操作:[0122:X02]代入,敵キャラ02の画面X
 ◆変数の操作:[0142:Y02]代入,敵キャラ02の画面Y
 ◆変数の操作:[0141〜0142]減算,8
 ◆変数の操作:[0121〜0122]減算,変数[0042]の値
 ◆変数の操作:[0141〜0142]減算,変数[0052]の値
 ◆変数の操作:[0121〜0142]除算,8
 ◆条件分岐:変数[0121:X01]が0
  ◆条件分岐:変数[0141:Y01]が0
   ◆スイッチの操作:[0003:ダメージ処理]をONにする
   ◆イベントの呼び出し:敵キャラ01[1]
   ◆スイッチの操作:[0003:ダメージ処理]をOFFにする
   ◆スイッチの操作:[0012:弾丸移動中02]をOFFにする
   ◆指定ラベルへ飛ぶ:4
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆条件分岐:変数[0122:X02]が0
  ◆条件分岐:変数[0142:Y02]が0
   ◆スイッチの操作:[0003:ダメージ処理]をONにする
   ◆イベントの呼び出し:敵キャラ02[1]
   ◆スイッチの操作:[0003:ダメージ処理]をOFFにする
   ◆スイッチの操作:[0012:弾丸移動中02]をOFFにする
   ◆指定ラベルへ飛ぶ:4
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆ラベルの設定:4

 ◆
:それ以外の場合
 ◆ピクチャーの移動:2,(160,120),0.0秒(透明度:100%)
 ◆
:分岐終了
◆条件分岐:スイッチ[0013:弾丸移動中03]がON(オプション:ON)
 ◆条件分岐:変数[0033:弾丸移動量03]がV[0002]以上
  ◆スイッチの操作:[0013:弾丸移動中03]をOFFにする
  ◆
 :分岐終了
 ◆変数の操作:[0043:弾丸03X]加算,変数[0063]の値
 ◆変数の操作:[0053:弾丸03Y]加算,変数[0073]の値
 ◆ピクチャーの移動:3,(V[0043],V[0053]),0.0秒(透明度:0%)
 ◆変数の操作:[0121:X01]代入,敵キャラ01の画面Xこの色は弾丸1の設定をコピーした所
 ◆変数の操作:[0141:Y01]代入,敵キャラ01の画面Y 弾丸1の設定と違う所はこの色で表示
 ◆変数の操作:[0122:X02]代入,敵キャラ02の画面X
 ◆変数の操作:[0142:Y02]代入,敵キャラ02の画面Y
 ◆変数の操作:[0141〜0142]減算,8
 ◆変数の操作:[0121〜0122]減算,変数[0043]の値
 ◆変数の操作:[0141〜0142]減算,変数[0053]の値
 ◆変数の操作:[0121〜0142]除算,8
 ◆条件分岐:変数[0121:X01]が0
  ◆条件分岐:変数[0141:Y01]が0
   ◆スイッチの操作:[0003:ダメージ処理]をONにする
   ◆イベントの呼び出し:敵キャラ01[1]
   ◆スイッチの操作:[0003:ダメージ処理]をOFFにする
   ◆スイッチの操作:[0013:弾丸移動中03]をOFFにする
   ◆指定ラベルへ飛ぶ:5
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆条件分岐:変数[0122:X02]が0
  ◆条件分岐:変数[0142:Y02]が0
   ◆スイッチの操作:[0003:ダメージ処理]をONにする
   ◆イベントの呼び出し:敵キャラ02[1]
   ◆スイッチの操作:[0003:ダメージ処理]をOFFにする
   ◆スイッチの操作:[0013:弾丸移動中03]をOFFにする
   ◆指定ラベルへ飛ぶ:5
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆ラベルの設定:5

 ◆
:それ以外の場合
 ◆ピクチャーの移動:3,(160,120),0.0秒(透明度:100%)
 ◆
:分岐終了
◆指定ラベルへ飛ぶ:1番



  
☆敵キャラの設定
敵キャラのマップイベントを作成します。
イベントIDで当たり判定でも画面位置で当たり判定でも、
 敵キャラの設定は同じ設定になります。


1ページ目には、敵キャラの行動設定や敵キャラに攻撃を与えた時の処理を設定します。
敵キャラを倒した時には、敵キャラの位置を壁のマスなどへ移動します。
これは敵キャラが消滅しても、消滅した所に当たり判定が残ってしまうためです。

2ページ目は敵キャラを倒した時に表示されるページです。

■マップイベント「敵キャラ01」
▼1ページ目
イベント出現条件:なし
イベント開始条件:イベントから触れたとき
グラフィック:敵キャラの歩行グラフィック
◆条件分岐:スイッチ[0003:ダメージ処理]がON<弾丸処理から呼び出された時
 ◆変数の操作:[0101:敵ダメージ01]加算,1<ダメージ量を増やします
 ◆条件分岐:変数[0101:敵ダメージ01]が9以下(オプション:ON)<敵キャラが生きている時
  ◆キャラクターのフラッシュ:このイベント,0.5秒<敵キャラを赤くフラッシュさせます
  ◆効果音の演奏:ダメージ1<ダメージを受けた時の効果音
  ◆
 :それ以外の場合<変数101番が10以上
  ◆条件分岐:変数[0101:敵ダメージ01]が10<敵キャラが消滅する時
   ◆効果音の演奏:攻撃2<消滅した時の効果音
   ◆イベントの位置を設定:このイベント,(000,000)<壁があるマスへ移動
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆イベント処理の中断
 ◆
:分岐終了
◆条件分岐:決定キーでこのイベントを開始した
 ◆イベント処理の中断
 ◆
:分岐終了
◆条件分岐:変数[0022:無敵時間]が-1以下<主人公が無敵状態である時
 ◆イベント処理の中断
 ◆
:分岐終了
◆変数の操作:[0022:無敵時間]代入,-30<0.5秒間無敵にする
〜敵の攻撃処理などを設定してください〜

▼2ページ目
イベント出現条件:変数[0101:敵ダメージ01]が10以上
イベント開始条件:決定キーが押されたとき
グラフィック:透明
イベント実行内容の設定は不要です。



2体目以降の敵キャラの設定は、
1体目をコピーして、それを基に設定した方が楽に設定する事ができます。

■マップイベント「敵キャラ02」
▼1ページ目
イベント出現条件:なし
イベント開始条件:イベントから触れたとき
グラフィック:敵キャラの歩行グラフィック
◆条件分岐:スイッチ[0003:ダメージ処理]がON
 ◆変数の操作:[0102:敵ダメージ02]加算,1
 ◆条件分岐:変数[0102:敵ダメージ02]が9以下(オプション:ON)
  ◆キャラクターのフラッシュ:このイベント,0.5秒
  ◆効果音の演奏:ダメージ1
  ◆
 :それ以外の場合
  ◆条件分岐:変数[0102:敵ダメージ02]が10
   ◆効果音の演奏:攻撃2
   ◆イベントの位置を設定:このイベント,(000,000)
   ◆
  :分岐終了
  ◆
 :分岐終了
 ◆イベント処理の中断
 ◆
:分岐終了
◆条件分岐:決定キーでこのイベントを開始した
 ◆イベント処理の中断
 ◆
:分岐終了
◆条件分岐:変数[0022:無敵時間]が-1以下
 ◆イベント処理の中断
 ◆
:分岐終了
◆変数の操作:[0022:無敵時間]代入,-30
〜敵の攻撃処理などを設定してください〜

▼2ページ目
イベント出現条件:変数[0102:敵ダメージ02]が10以上
イベント開始条件:決定キーが押されたとき
グラフィック:透明
イベント実行内容の設定は不要です。


■移動設定について
敵キャラの移動設定にて、
主人公に近寄るランダムに移動を交互に実行したい時には、
敵キャラの移動タイプ移動ルート指定にしておき、
[移動ルートの設定]にて、以下の設定を行ってください。
◇主人公に近寄る
◇ランダムに移動

※2つのオプションの両方にチェックを入れる。

応用次第では、
◇ランダムに移動
◇ランダムに移動
◇ランダムに移動
◇移動頻度アップ
◇移動頻度アップ
◇移動頻度アップ
◇移動頻度アップ
◇主人公に近寄る
◇主人公に近寄る
◇主人公に近寄る
◇移動頻度ダウン
◇移動頻度ダウン
◇移動頻度ダウン
◇移動頻度ダウン

と言った様に、ランダムで移動していた敵キャラが、
急に主人公に向かって突進してくるような移動設定も可能です。



☆敵キャラでは無い障害物イベント
敵キャラではないものの、弾丸が当たると、
その先のマスへは弾丸が飛ばなくなる障害物のマップイベントを設定したい時には、
イベントID敵キャラと認識されるイベントIDにしておき、
以下のように設定してください。

■障害物イベント※イベントIDを敵キャラと認識されるIDにしておく
イベント出現条件:なし
イベント開始条件:決定キーが押されたとき
グラフィック:障害物のグラフィック
イベント実行内容は何も設定しません。

1つ作成しましたら、あとはコピー&貼り付けで増やしてください。



☆補足
マップイベントの設定数が多ければ多いほど、処理落ちが発生しやすくなります。
あまりに無駄と思えるようなマップイベントの設定は避けてください。



ピクチャー弾丸のページ
基礎ページ まずはこのページの設定を行ってください。
当たり判定の処理を追加する 敵キャラなどのマップイベントの当たり判定を追加します。
壁の当たり判定を追加する 弾丸が壁を貫通しないようにします。
画面スクロールに対応させる 固定画面(横20×縦15マス+マップループ無し)では無い場合は、
このページの設定が必要です。
敵も弾丸発射 敵も弾丸を撃つようにします。
※先に当たり判定の処理を追加するを設定してください。
監視イベントを追加 敵の視野内に入ると主人公に近づくようにします。
※先に当たり判定の処理を追加するを設定してください。
 

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