RPGツクール2000/自作戦闘【サイトトップへ戻る】
ピクチャー弾丸を飛ばす
■当たり判定の処理を追加する
(更新:2020/07/05)
ピクチャー弾丸を飛ばすイベントに、マップイベントに対する当たり判定の処理のイベントを追加します。
タルなどの障害物となるマップイベントを設定する場合は、移動しない敵キャラとして設定してください。
※この色の部分はピクチャー弾丸を飛ばすのページにあった部分です。
■当たり判定を判断する方法
ピクチャーの弾丸が敵キャラに当たっているかどうかを判断させる方法は、以下の3つがあります。
■マス座標で当たり判定
敵キャラのX座標、Y座標を変数に取得して、敵キャラに弾丸が当たっているかどうかを判断します。
ピクチャー弾丸の設定では使い勝手が悪いので、今回の制作では使用しません。
■イベントIDで当たり判定
イベントコマンド:指定位置のイベントID取得を使用して、弾丸がいるマスのイベントIDを取得し、
取得したイベントIDが敵のイベントIDである時には、敵キャラに当たったと判断します。
アクションRPGの当たり判定では、よく使われている設定方法です。
なお、ピクチャー弾丸の当たり判定では、
移動中の敵キャラへの命中率が下がると言う欠点があります。※詳しくは後ほど説明。
■画面位置で当たり判定
敵キャラの画面X、画面Yと弾丸の位置を比較して、
敵キャラに弾丸が重なっている時に「当たった」と判断します。
移動中の敵キャラでも正確に当たり判定を判断する事ができますが、
敵1体ごとに当たり判定の処理を設定する必要があり、
たくさんの敵キャラがいる場合には、あまりお勧めできません。
なお、敵キャラ(ターゲット)がピクチャーである時には、この設定方法になります。
▲トップへ戻る▲
■イベントIDでの当たり判定に関して
イベントIDで当たり判定は、設定が楽に行える反面、
移動している途中の敵キャラの当たり判定がうまく行えない事があります。
|
|
左図のように、敵キャラが止まっている時には、
主人公から発射された弾丸(黄色の矢印)は当たります。 |
|
|
|
|
|
しかし敵キャラが移動すると、当たり判定のマスは次のマスへ移動するので、
まだ前のマスに体が残っていても(黄色の矢印のように撃っても)、
敵キャラには当たらず、水色の矢印のように撃つと、
敵が赤いマスへ移動し終わってなくても、敵キャラに当たります。 |
|
|
|
また弾丸と敵キャラが入れ替わるように移動すると、
当たり判定が行われない事があります。 |
|
弾丸と敵キャラが入れ替わるために当たり判定が行われない部分は、
当たり判定を2重に設定する事で回避する事ができます。
実際にこのページのイベントIDで当たり判定の設定では、当たり判定の部分を2重設定しています。
▲トップへ戻る▲
■命中率について
命中率は敵キャラの移動設定によって大きく変わります。
基本的に「主人公に近寄る」など、予測しやすい移動設定にすると、命中率が上がります。
逆に「ランダム移動」などの予測しにくい移動設定にすると、命中率が下がります。
移動頻度の数値を小さくすると、敵キャラが停止している時間が長くなるので、命中率が上がります。
逆に移動頻度の数値を大きくすると、頻繁に移動しますので、命中率が下がります。
▲トップへ戻る▲
■イベントID取得 or 画面位置
基本的にイベントIDで当たり判定をお勧めします。
敵キャラの移動頻度を「8」などにすると命中率が低くなるので、
そのような時には画面位置で当たり判定で設定すると良いでしょう。
但し、画面位置で当たり判定の場合は、弾丸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を設定します。
例えば…
イベントID0001番=階段イベント
イベントID0002番=宝箱イベント
イベントID0003番=看板イベント
イベントID0004番=敵キャラ1
イベントID0005番=敵キャラ2 |
の場合は、変数[0009]には「4」を設定します。
▲トップへ戻る▲
■イベント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つ作成したら、あとはコピー&貼り付けで増やしてください。
▲トップへ戻る▲
■補足
マップイベントの設定数が多ければ多いほど、処理落ちが発生しやすくなります。
そのため、無駄なマップイベントの設定は避けてください。
▲トップへ戻る▲
|