RPGツクール2000/自作戦闘【サイトトップへ戻る】
アクションRPGの戦闘システムを作る
■主人公の攻撃処理
(更新:2020/08/08)


アクション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=2」「Y=2」が変数に代入されます。
『3』 変数に記録したマス座標を、
主人公が向いている方向のマス(主人公の目の前のマス)に合わせます。
上を向いている Y−1
下を向いている Y+1
左を向いている X−1
右を向いている X+1
上図では右向きなので「X+1」を設定し、「X=3」「Y=2」にします。
『4』 指定位置のイベントID取得を使って、
変数の記録された座標位置のイベントIDを調べます。
『5』 調べたイベントIDが敵のイベントIDである時には、攻撃を実行します。
※当ページの設定例では「イベントID2以上=敵キャラ」としています。
攻撃範囲が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トップ  このサイトは何?  気紛れな空間へ戻る  メール