RPGツクール2000/自作戦闘
ピクチャー弾丸を飛ばす
■壁の当たり判定を追加する
(更新:2015/12/19)


ピクチャー弾丸を飛ばすイベントに壁の当たり判定を追加します。



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

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



☆地形IDの準備
ピクチャーの弾丸が壁に当たっているかどうかの判断は、
イベントコマンド:指定位置の地形ID取得を使って、
弾丸がある位置の地形IDを読み取って行います。

まずデータベース「地形」の設定を行います。
今回は、
地形番号0001番を「平地」
地形番号0002番を「壁」とします。



データベース「チップセット」の設定を行います。
下層チップの[地形]の設定で、
まず[地形の一括設定]で全ての地形番号を「1」にしてから、
壁にしたい下層チップの地形番号を「2」にしてください。


以上で準備完了です。



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

スイッチ
番号 名前 使用内容 初使用ページ
0001 システム起動 初期設定が終わったら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を取得。 当たり判定
 
0021 キーカウント 弾丸が発射して、次の弾丸が発射するまでの間をカウント。 基礎
 
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の移動量を記憶。 基礎

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



☆イベントの設定
壁の当たり判定を行うイベントを追加します。

初期設定の設定は基礎ページと変わりません。

■コモンイベント「弾丸処理」
出現条件スイッチ:[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]の値
  ◆効果音の演奏:打撃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%)
 ◆変数の操作:[0005:X座標]代入,変数[0041]の値
 ◆変数の操作:[0006:Y座標]代入,変数[0051]の値
 ◆変数の操作:[0005〜0006]除算,16
 ◆指定位置の地形ID取得:(V[0005],V[0006]),[0007:ID]
 ◆条件分岐:変数[0007:ID]が2<弾丸1があるマスに壁がある時
  ◆スイッチの操作:[0011:弾丸移動中01]をOFFにする<弾丸1を消去します
  ◆
 :分岐終了

 ◆
:それ以外の場合
 ◆ピクチャーの移動: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%)
 ◆変数の操作:[0005:X座標]代入,変数[0042]の値
 ◆変数の操作:[0006:Y座標]代入,変数[0052]の値
 ◆変数の操作:[0005〜0006]除算,16
 ◆指定位置の地形ID取得:(V[0005],V[0006]),[0007:ID]
 ◆条件分岐:変数[0007:ID]が2<弾丸2があるマスに壁がある時
  ◆スイッチの操作:[0012:弾丸移動中02]をOFFにする<弾丸2を消去します
  ◆
 :分岐終了

 ◆
:それ以外の場合
 ◆ピクチャーの移動: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%)
 ◆変数の操作:[0005:X座標]代入,変数[0043]の値
 ◆変数の操作:[0006:Y座標]代入,変数[0053]の値
 ◆変数の操作:[0005〜0006]除算,16
 ◆指定位置の地形ID取得:(V[0005],V[0006]),[0007:ID]
 ◆条件分岐:変数[0007:ID]が2<弾丸3があるマスに壁がある時
  ◆スイッチの操作:[0013:弾丸移動中03]をOFFにする<弾丸3を消去します
  ◆
 :分岐終了

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


以上で設定完了です。

これで地形番号:2番の下層チップのマスに弾丸が移動しますと、
弾丸は消去されて、その先のマスへは弾丸が移動しないようになります。



☆補足
チップセットの上層チップは、通行設定移動不可(×)にしていても、
ピクチャー弾丸は貫通してしまいます。
ピクチャー弾丸が上層チップを貫通しないようにするには、
上層チップの下に設定する下層チップを壁となる地形IDにしておくか、
当たり判定の処理を追加するでマップイベントとして上層チップを設定しておくか、
いずれかの設定が必要です。



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

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