RPGツクール2000/自作戦闘
アクションRPGの戦闘システムを作る
■主人公の攻撃処理
(更新:2009/07/25)


アクションRPG用の主人公の攻撃処理を作成します。



このページは続きとなっているページです
このページは、アクションRPGの戦闘システムを作るから続いているページです。
制作内容もアクションRPGの戦闘システムを作るのページからご覧頂かないと、
分からないような作りになっています。
【アクションRPGの戦闘システムを作るのページを開く】



☆スイッチ・変数
使用するスイッチと変数の名前使用内容は以下の通りです。

スイッチ
番号 名前 使用内容 初使用ページ
0021 戦闘システム起動 定期的に並列処理するのイベントを起動します。 主人公の攻撃処理

変数
番号 名前 使用内容 初使用ページ
0001 キー入力 キー入力の処理で使います。 主人公の攻撃処理
0002 X位置 当たり判定のX座標を記憶します。 主人公の攻撃処理
0003 Y位置 当たり判定のY座標を記憶します。 主人公の攻撃処理
0004 イベントID 敵キャラの有無を調べる時に使います。 主人公の攻撃処理
0005 正面マスへ±X 当たり判定のX座標を変える時に使います。 主人公の攻撃処理
0006 正面マスへ±Y 当たり判定のY座標を変える時に使います。 主人公の攻撃処理
0007 左手マスへ±X 当たり判定のX座標を変える時に使います。 主人公の攻撃処理
0008 左手マスへ±Y 当たり判定のY座標を変える時に使います。 主人公の攻撃処理
0009 地形ID 障害物があるかどうかを調べる時に使います。 主人公の攻撃処理

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



☆攻撃処理の基本
主人公の攻撃処理は、定期的に並列処理するで動かし、
決定キーが押された時に、主人公の目の前のマスに敵キャラがいるかどうかを調べ、
敵キャラがいる時には、その敵キャラに攻撃を行います。



攻撃処理は以下のように処理します。

『1』キー入力の処理で決定キーが押されたかどうかを調べます。
   決定キーが押された時には『2』の処理へ移行します。

『2』主人公の座標位置(X座標、Y座標)を変数に代入します。
   ※上図では、X=2Y=2が変数に代入されます。

『3』変数に記憶したマスの座標を、
   主人公が向いている方向のマス(主人公の目の前のマス)に合わせます。
   上を向いている時には、Y−1
   下を向いている時には、Y+1
   左を向いている時には、X−1
   右を向いている時には、X+1

   ※上図は右向きなので、変数の値は、X=3Y=2になります。

『4』指定位置のイベントID取得を使って、
   変数の記憶された座標位置のイベントIDを調べます。

『5』調べたイベントIDが敵のイベントIDである時には、攻撃を実行します。
   ※このページの設定例では、イベントID2以上を敵キャラとしています。

『6』1マスのみの攻撃範囲の場合は、これでイベント処理は終了です。
   2マス以上の攻撃範囲がある場合は、『3』の処理に戻ります。


上記の攻撃処理をイベントとして設定しますと、以下のようになります。

■コモンイベント「主人公の攻撃処理」
イベント開始条件:定期的に並列処理する
出現条件スイッチ:[0021:戦闘システム起動]
◆注釈:------------------------------------------------------------
:  :▼『1』
:  :

◆キー入力の処理:[0001:キー入力](決定/オプション:ON)
◆注釈:------------------------------------------------------------
:  :▼『2』
:  :

◆変数の操作:[0002:X座標]代入,主人公のX座標
◆変数の操作:[0003:Y座標]代入,主人公のY座標
◆注釈:------------------------------------------------------------
:  :▼『3』
:  :

◆条件分岐:主人公が上を向いている
 ◆変数の操作:[0003:Y座標]減算,1
 ◆
:分岐終了
◆条件分岐:主人公が下を向いている
 ◆変数の操作:[0003:Y座標]加算,1
 ◆
:分岐終了
◆条件分岐:主人公が左を向いている
 ◆変数の操作:[0002:X座標]減算,1
 ◆
:分岐終了
◆条件分岐:主人公が右を向いている
 ◆変数の操作:[0002:X座標]加算,1
 ◆
:分岐終了
◆注釈:------------------------------------------------------------
:  :▼『4』
:  :

◆指定位置のイベントID取得:(V[0002],V[0003]),[0004:イベントID]
◆注釈:------------------------------------------------------------
:  :▼『5』
:  :

◆条件分岐:変数[0004:イベントID]が2以上
 ◆注釈:------------------------------
 :  :攻撃処理
 :  : 

 ◆効果音の演奏:斬る1
 ◆
:分岐終了


*動作テスト*
上記のイベントをコモンイベントに設定しましたら、
マップ内にマップイベントを設定して、テストプレーを実行してください。
マップイベントの隣りに移動して、
マップイベントの方を向いた状態で決定キーを押して効果音(斬る1)が鳴れば、
攻撃処理が実行された事になります。



☆攻撃範囲の拡大+障害物の判断
攻撃範囲を2マス先まで伸ばします。


1マス目の地形IDを調べて、障害物があった時(地形IDが2番の時)には、
2マス目には攻撃が届かないようにします。



今回の設定では、
攻撃範囲のマスに変数[0002:X座標]変数[0003:Y座標]の値を設定する時に、
以下の4つの変数を使います。
変数[0005:正面マスへ±X]
変数[0006:正面マスへ±Y]
変数[0007:左マスへ±X]
変数[0008:左マスへ±Y]


この変数0005〜0008番には、向きに合わせた値を設定しておきます。
  上向き 下向き 左向き 右向き
変数[0005:正面マスへ±X] 0 0 -1 1
変数[0006:正面マスへ±Y] -1 1 0 0
変数[0007:左手マスへ±X] -1 1 0 0
変数[0008:左手マスへ±Y] 0 0 1 -1

ここで言う左手マスへは、画面の左のマスではなく、
主人公が向いている方向の左手のマスになります。
正面のマス黄色左手のマス


攻撃範囲の座標の設定は、以下のように設定します。

▼主人公の正面のマスに座標に合わせる
◆変数の操作:[0002:X座標]加算,変数[0005]の値
◆変数の操作:[0003:Y座標]加算,変数[0006]の値

▼主人公の真後ろのマスに座標を合わせる
◆変数の操作:[0002:X座標]減算,変数[0005]の値
◆変数の操作:[0003:Y座標]減算,変数[0006]の値

▼主人公の左手側のマスに座標を合わせる
◆変数の操作:[0002:X座標]加算,変数[0007]の値
◆変数の操作:[0003:Y座標]加算,変数[0008]の値

▼主人公の右手側のマスに座標を合わせる
◆変数の操作:[0002:X座標]減算,変数[0007]の値
◆変数の操作:[0003:Y座標]減算,変数[0008]の値

■コモンイベント「主人公の攻撃処理」
イベント開始条件:定期的に並列処理する
出現条件スイッチ:[0021:戦闘システム起動]
◆注釈:------------------------------------------------------------
:  :▼『1』
:  :

◆キー入力の処理:[0001:キー入力](決定/オプション:ON)
◆注釈:------------------------------------------------------------
:  :▼『2』
:  :

◆変数の操作:[0002:X座標]代入,主人公のX座標
◆変数の操作:[0003:Y座標]代入,主人公のY座標
◆注釈:------------------------------------------------------------
:  :▼『3』
:  :

◆変数の操作:[0005〜0008]代入,0
◆条件分岐:主人公が上を向いている
 ◆変数の操作:[0006:正面マスへ±Y]代入,-1
 ◆変数の操作:[0007:左手マスへ±X]代入,-1

 ◆
:分岐終了
◆条件分岐:主人公が下を向いている
 ◆変数の操作:[0006:正面マスへ±Y]代入,1
 ◆変数の操作:[0007:左手マスへ±X]代入,1

 ◆
:分岐終了
◆条件分岐:主人公が左を向いている
 ◆変数の操作:[0005:正面マスへ±X]代入,-1
 ◆変数の操作:[0008:左手マスへ±Y]代入,1

 ◆
:分岐終了
◆条件分岐:主人公が右を向いている
 ◆変数の操作:[0005:正面マスへ±X]代入,1
 ◆変数の操作:[0008:左手マスへ±Y]代入,-1

 ◆
:分岐終了
◆注釈:------------------------------------------------------------
:  :▼『4』(1マス目)
:  :

◆変数の操作:[0002:X座標]加算,変数[0005]の値
◆変数の操作:[0003:Y座標]加算,変数[0006]の値
◆指定位置の地形ID取得:(V[0002],V[0003]),[0009:地形ID]
◆条件分岐:変数[0009:地形ID]が2<1マス目に障害物がある時
 ◆イベント処理の中断
 ◆
:分岐終了

◆指定位置のイベントID取得:(V[0002],V[0003]),[0004:イベントID]
◆注釈:------------------------------------------------------------
:  :▼『5』
:  :

◆条件分岐:変数[0004:イベントID]が2以上
 ◆注釈:------------------------------
 :  :攻撃処理
 :  : 

 ◆効果音の演奏:斬る1
 ◆イベント処理の中断<攻撃を貫通させる時には、この設定は不要です
 ◆
:分岐終了
◆注釈:------------------------------------------------------------
:  :▼『4』(2マス目)
:  :

◆変数の操作:[0002:X座標]加算,変数[0005]の値
◆変数の操作:[0003:Y座標]加算,変数[0006]の値
◆指定位置のイベントID取得:(V[0002],V[0003]),[0004:イベントID]
◆注釈:------------------------------------------------------------
:  :▼『5』
:  :

◆条件分岐:変数[0004:イベントID]が2以上
 ◆注釈:------------------------------
 :  :攻撃処理
 :  : 

 ◆効果音の演奏:斬る1
 ◆
:分岐終了





☆戦闘アニメを設定
戦闘アニメを表示する場合は、事前に向きごとの戦闘アニメを用意してください。
【戦闘アニメの準備手順を見る】

■コモンイベント「主人公の攻撃処理」
イベント開始条件:定期的に並列処理する
出現条件スイッチ:[0021:戦闘システム起動]
◆注釈:------------------------------------------------------------
:  :▼『1』
:  :

◆キー入力の処理:[0001:キー入力](決定/オプション:ON)
◆注釈:------------------------------------------------------------
:  :▼『2』
:  :

◆変数の操作:[0002:X座標]代入,主人公のX座標
◆変数の操作:[0003:Y座標]代入,主人公のY座標
◆注釈:------------------------------------------------------------
:  :▼『3』
:  :

◆変数の操作:[0005〜0008]代入,0
◆条件分岐:主人公が上を向いている
 ◆変数の操作:[0006:正面マスへ±Y]代入,-1
 ◆変数の操作:[0007:左手マスへ±X]代入,-1
 ◆戦闘アニメの表示:剣A 上向き,主人公
 ◆
:分岐終了
◆条件分岐:主人公が下を向いている
 ◆変数の操作:[0006:正面マスへ±Y]代入,1
 ◆変数の操作:[0007:左手マスへ±X]代入,1
 ◆戦闘アニメの表示:剣A 下向き,主人公
 ◆
:分岐終了
◆条件分岐:主人公が左を向いている
 ◆変数の操作:[0005:正面マスへ±X]代入,-1
 ◆変数の操作:[0008:左手マスへ±Y]代入,1
 ◆戦闘アニメの表示:剣A 左向き,主人公
 ◆
:分岐終了
◆条件分岐:主人公が右を向いている
 ◆変数の操作:[0005:正面マスへ±X]代入,1
 ◆変数の操作:[0008:左手マスへ±Y]代入,-1
 ◆戦闘アニメの表示:剣A 右向き,主人公
 ◆
:分岐終了
◆注釈:------------------------------------------------------------
:  :▼『4』(1マス目)
:  :

◆変数の操作:[0002:X座標]加算,変数[0005]の値
◆変数の操作:[0003:Y座標]加算,変数[0006]の値
◆指定位置の地形ID取得:(V[0002],V[0003]),[0009:地形ID]
◆条件分岐:変数[0009:地形ID]が2
 ◆イベント処理の中断
 ◆
:分岐終了
◆指定位置のイベントID取得:(V[0002],V[0003]),[0004:イベントID]
◆注釈:------------------------------------------------------------
:  :▼『5』
:  :

◆条件分岐:変数[0004:イベントID]が2以上
 ◆注釈:------------------------------
 :  :攻撃処理
 :  : 

 ◆効果音の演奏:斬る1
 ◆イベント処理の中断
 ◆
:分岐終了
◆注釈:------------------------------------------------------------
:  :▼『4』(2マス目)
:  :

◆変数の操作:[0002:X座標]加算,変数[0005]の値
◆変数の操作:[0003:Y座標]加算,変数[0006]の値
◆指定位置のイベントID取得:(V[0002],V[0003]),[0004:イベントID]
◆注釈:------------------------------------------------------------
:  :▼『5』
:  :

◆条件分岐:変数[0004:イベントID]が2以上
 ◆注釈:------------------------------
 :  :攻撃処理
 :  : 

 ◆効果音の演奏:斬る1
 ◆
:分岐終了




☆攻撃時に移動できない時間を作る
主人公が攻撃を行うと、一定時間の間は行動ができなくなるように設定します。

この設定を行うと、戦闘アニメが表示されている間は次の行動ができなくなる他、
移動しながら常に攻撃し続けるような行動も行いにくくなります。

■コモンイベント「主人公の攻撃処理」
イベント開始条件:定期的に並列処理する
出現条件スイッチ:[0021:戦闘システム起動]
◆注釈:------------------------------------------------------------
:  :▼『1』
:  :

◆キー入力の処理:[0001:キー入力](決定/オプション:ON)
◆キャラクターの動作指定:主人公,一時停止(動作を繰り返す:ON)
◆注釈:------------------------------------------------------------
:  :▼『2』
:  :

◆変数の操作:[0002:X座標]代入,主人公のX座標
◆変数の操作:[0003:Y座標]代入,主人公のY座標
◆注釈:------------------------------------------------------------
:  :▼『3』
:  :

◆変数の操作:[0005〜0008]代入,0
◆条件分岐:主人公が上を向いている
 ◆変数の操作:[0006:正面マスへ±Y]代入,-1
 ◆変数の操作:[0007:左手マスへ±X]代入,-1
 ◆戦闘アニメの表示:剣A 上向き,主人公
 ◆
:分岐終了
◆条件分岐:主人公が下を向いている
 ◆変数の操作:[0006:正面マスへ±Y]代入,1
 ◆変数の操作:[0007:左手マスへ±X]代入,1
 ◆戦闘アニメの表示:剣A 下向き,主人公
 ◆
:分岐終了
◆条件分岐:主人公が左を向いている
 ◆変数の操作:[0005:正面マスへ±X]代入,-1
 ◆変数の操作:[0008:左手マスへ±Y]代入,1
 ◆戦闘アニメの表示:剣A 左向き,主人公
 ◆
:分岐終了
◆条件分岐:主人公が右を向いている
 ◆変数の操作:[0005:正面マスへ±X]代入,1
 ◆変数の操作:[0008:左手マスへ±Y]代入,-1
 ◆戦闘アニメの表示:剣A 右向き,主人公
 ◆
:分岐終了
◆注釈:------------------------------------------------------------
:  :▼『4』(1マス目)
:  :

◆変数の操作:[0002:X座標]加算,変数[0005]の値
◆変数の操作:[0003:Y座標]加算,変数[0006]の値
◆指定位置の地形ID取得:(V[0002],V[0003]),[0009:地形ID]
◆条件分岐:変数[0009:地形ID]が2
 ◆指定ラベルへ飛ぶ:1番<「イベント処理の中断」の設定を変える
 ◆
:分岐終了
◆指定位置のイベントID取得:(V[0002],V[0003]),[0004:イベントID]
◆注釈:------------------------------------------------------------
:  :▼『5』
:  :

◆条件分岐:変数[0004:イベントID]が2以上
 ◆注釈:------------------------------
 :  :攻撃処理
 :  : 

 ◆効果音の演奏:斬る1
 ◆指定ラベルへ飛ぶ:1番<「イベント処理の中断」の設定を変える
 ◆
:分岐終了
◆注釈:------------------------------------------------------------
:  :▼『4』(2マス目)
:  :

◆変数の操作:[0002:X座標]加算,変数[0005]の値
◆変数の操作:[0003:Y座標]加算,変数[0006]の値
◆指定位置のイベントID取得:(V[0002],V[0003]),[0004:イベントID]
◆注釈:------------------------------------------------------------
:  :▼『5』
:  :

◆条件分岐:変数[0004:イベントID]が2以上
 ◆注釈:------------------------------
 :  :攻撃処理
 :  : 

 ◆効果音の演奏:斬る1
 ◆
:分岐終了
◆ラベルの設定:1番<追加
◆ウェイト:0.2秒<主人公が停止する時間を設定
◆キャラクターの動作指定:主人公
<何も動作を設定しない事で「一時停止」を解除


戦闘アニメは1フレームにつき、30分の1秒の時間がかかります。
もしも戦闘アニメの表示時間の間、主人公が止まっているようにする場合は、
1フレーム:ウェイト:0.0秒×2個
3フレーム:ウェイト:0.1秒×1個

を設定してください。
▼10フレームの場合のウェイトの設定
◆ウェイト:0.3秒
◆ウェイト:0.0秒
◆ウェイト:0.0秒




☆出現条件スイッチについて
敵がいるマップ敵がいないマップがある時には、
主人公の攻撃処理出現条件スイッチ:[0021:戦闘システム起動]を設定して、
敵がいないマップでは主人公の攻撃処理が動かないようにしてください。

▼敵がいないマップ(街のマップ、マップ移動型の自作メニュー)へ移動
場所移動時に、
◆スイッチの操作:[0021:戦闘システム起動]をOFFにする
を設定してください。

▼敵がいるマップへ移動
初期設定のイベントの中に、
◆スイッチの操作:[0021:戦闘システム起動]をONにする
を設定してください。



ページタイトル 内容
備考
基礎ページ 制作を始める前に必ず見ておく基礎ページです。
必見!
制作に必要な情報を見る事ができます。
イベントIDの管理 イベントIDの管理に関するページです。
制作テクニックです。
主人公の攻撃処理 決定キーを押すと攻撃を行う処理。
必要な処理。
様々な攻撃範囲の設定 様々な攻撃範囲の設定方法を紹介。
「主人公の攻撃処理」の後に見てください。
武器とキー処理 武器装備時、または溜め攻撃時の攻撃範囲の変更を紹介。
「主人公の攻撃処理」の後に見てください。
敵の設定 基本的な敵キャラの設定方法を紹介。
必要な処理。「主人公の攻撃処理」の後に見てください。
ダメージ&命中率の計算 攻撃力や防御力を使ったダメージ&命中率の計算を設定。
「敵の設定」の後に見てください。
マップごとに敵HPを管理 別のマップへ移動しても敵HPが初期化しないように設定。
「敵の設定」の後に見てください。
敵の位置を記憶 別のマップへ移動する前に敵の位置を記憶します。
「敵の設定」の後に見てください。
戦闘アニメの表示制限 宝箱などを調べても戦闘アニメが表示されないように設定。
「敵の設定」の後に見てください。
主人公のHPを表示 主人公のHP表示を設定します。
敵の設定までが終わりましたらご覧ください。
敵のHPを表示 敵のHP表示を設定します。
敵の設定までが終わりましたらご覧ください。


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