RPGツクール2000/自作戦闘【サイトトップへ戻る】
ピクチャー弾丸を飛ばす
■壁の当たり判定を追加する
(更新:2020/07/05)


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



ショートカット
■地形IDの準備
■スイッチ・変数
■イベントの設定
■補足

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

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


  
■地形IDの準備

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



まずデータベース「地形」の設定を行います。

今回は…
地形ID[0001]=「平地」
地形ID[0002]=「壁」

とします。





データベース「チップセット」の設定を行います。

下層チップの[地形]の設定で、まず[地形の一括設定]で全ての地形IDを「1」にしてから、
壁にしたい下層チップの地形IDを「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番


以上で設定完了です。


これで「地形ID=2」の下層チップのマスに弾丸が移動すると弾丸は消去し、
その先のマスへ弾丸が移動しないようになります。


▲トップへ戻る▲


  
■補足

チップセットの上層チップは、通行設定で[×](移動不可)にしても、
ピクチャー弾丸は貫通してしまいます。

上層チップで弾丸が貫通しないようにするためには、
上層チップの下に設定する下層チップを壁の地形IDにするか、
障害物のマップイベント(当たり判定の処理を追加するに記載)を設定するか、
いずれかの対応が必要になります。


▲トップへ戻る▲



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

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