RPGツクールMVでゼルダの伝説・聖剣伝説風のアクションRPGを作る方法
RPGツクールMVで、ゼルダの伝説や聖剣伝説風(ファミコン・スーパーファミコン)のシンプルなトップビュー型アクションRPGを作るための方法です。
参考リンク
以下の記事も参考になります。
動作デモ
ポイント
- 決定ボタンを押すと、キャラクターが武器を振れるようにする。
- 『スイッチ』『コモンイベント』『変数』『セルフスイッチ』を活用する。
- 一部、JSのスクリプトを書くことが必要になる。
コモンイベントとは?
「コモンイベント」とは、ゲーム中ならいつでも実行できるイベントのこと。コモンイベントは、マップ上、バトル中などを問わずいつでもイベントの実行ができる。
コモンイベントは、『データベースのコモンイベントタブ』で作成できます。
- 【参考】 コモンイベントについて
手順
1.初期化処理とマップの作成
- 初期設定用のマップを作る。マップ名は「初期設定」とする。
- 実際にプレイヤーが動くマップを作る。マップ名は「マップ」とする。
- 主人公の初期位置は、何もないマップ「初期設定」にする。
- データベースのシステムタブを開き、初期パーティ欄に入力されているキャラクター名を削除する。
- 「初期設定」マップに、イベントを作成する。トリガーは「自動実行」。実行内容は、下記の通り。
◆画面のフェードアウト ◆メンバーの入れ替え:ハロルドを加える ◆場所移動:マップ (8,6) ◆画面のフェードイン
- これでゲームを起動すると、黒い画面が出た後、プレイヤーが「マップ」に表示されるようになる。
2.キー操作で剣を振れるようにする
- データベースの「アニメーション」タブを開き、剣を振るアニメーションを追加する。アニメーションは元プロジェクトからコピーした。
- スイッチ1番「キー入力受付」を用意する。スイッチの新規作成は、データベース、コモンイベントのスイッチ欄をクリックするとできる。
- 初期設定マップで、スイッチ1番「キー入力受付」をONにする。
◆画面のフェードアウト ◆メンバーの入れ替え:ハロルドを加える ◆スイッチの操作:#0001 キー入力受付 = ON ◆場所移動:マップ (8,6) ◆画面のフェードイン
- データベースの「コモンイベント」タブを開き、キー入力受付用のコモンイベントを作る。コモンイベント名は「キー入力受付」とする。
◆条件分岐:ボタン[決定]が押されている ◆条件分岐:決定キー押してる時間 = 0 ◆スイッチの操作:#0002 剣を振る = ON ◆ :分岐終了 ◆変数の操作:#0001 決定キー押してる時間 += 1 ◆ :それ以外のとき ◆変数の操作:#0001 決定キー押してる時間 = 0 ◆ :分岐終了
- コモンイベント「剣を振る」を新たに作る。トリガーは並列処理、出現条件はスイッチ2番「剣を振る」がONです。
◆条件分岐:プレイヤーが下を向いている ◆アニメーションの表示:プレイヤー, 剣↓ ◆ :分岐終了 ◆条件分岐:プレイヤーが左を向いている ◆アニメーションの表示:プレイヤー, 剣← ◆ :分岐終了 ◆条件分岐:プレイヤーが右を向いている ◆アニメーションの表示:プレイヤー, 剣→ ◆ :分岐終了 ◆条件分岐:プレイヤーが上を向いている ◆アニメーションの表示:プレイヤー, 剣↑ ◆ :分岐終了 ◆ウェイト:15フレーム ◆スイッチの操作:#0002 剣を振る = OFF
- これで、ゲームを実行し、決定ボタン(Enter)を押すと、プレイヤーが剣を振るようになった。
3.敵を用意する
- マップ上にランダムに動き回る敵を配置する。
名前:こうもり メモ:[対象者] 画像:正面画像 自律移動 タイプ:ランダム 速度:4標準速 頻度:3標準 オプション 歩行アニメ:チェックを入れる 足踏みアニメ:チェックを入れる プライオリティ:通常キャラと同じ トリガー:決定ボタン
- 「対象者取得」のコモンイベントを作成する。コモンイベントの実行内容は下記の通り。
◆指定位置の情報取得:対象者ID, イベントID, ({攻撃X},{攻撃Y}) ◆条件分岐:対象者ID ≠ 0 ◆文章:なし, ウィンドウ, 下 : :\>対象者は\V[4]番だよ! ◆ :分岐終了
- 変数を作成する。2番を「攻撃X」、3番を「攻撃Y」、4番を「対象者ID」とする。
- コモンイベント「剣を振る」の実行内容を以下のように書き換える。
◆変数の操作:#0002 攻撃X = プレイヤーのマップX ◆変数の操作:#0003 攻撃Y = プレイヤーのマップY ◆条件分岐:プレイヤーが下を向いている ◆アニメーションの表示:プレイヤー, 剣↓ ◆変数の操作:#0002 攻撃X -= 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0003 攻撃Y += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0003 攻撃Y -= 1 ◆コモンイベント:対象者取得 ◆ :分岐終了 ◆条件分岐:プレイヤーが左を向いている ◆アニメーションの表示:プレイヤー, 剣← ◆変数の操作:#0003 攻撃Y -= 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X -= 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0003 攻撃Y += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0003 攻撃Y += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X += 1 ◆コモンイベント:対象者取得 ◆ :分岐終了 ◆条件分岐:プレイヤーが右を向いている ◆アニメーションの表示:プレイヤー, 剣→ ◆変数の操作:#0003 攻撃Y -= 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0003 攻撃Y += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0003 攻撃Y += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X -= 1 ◆コモンイベント:対象者取得 ◆ :分岐終了 ◆条件分岐:プレイヤーが上を向いている ◆アニメーションの表示:プレイヤー, 剣↑ ◆変数の操作:#0002 攻撃X -= 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0003 攻撃Y -= 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0003 攻撃Y += 1 ◆コモンイベント:対象者取得 ◆ :分岐終了 ◆ウェイト:15フレーム ◆スイッチの操作:#0002 剣を振る = OFF
- コモンイベント「対象者取得」に、「対象者」であるかどうかの判定をするスクリプトを1行追加する。
◆指定位置の情報取得:対象者ID, イベントID, ({攻撃X},{攻撃Y}) ◆条件分岐:対象者ID ≠ 0 ◆条件分岐:スクリプト:~$dataMap.events[$gameVariables.value(4)].note.indexOf("[対象者]") ◆文章:なし, ウィンドウ, 下 : :\>対象者は\V[4]番だよ! ◆ :分岐終了 ◆ :分岐終了
- マップに、犬を置く。この犬には、メモに[対象者]と入れない。
- ゲームを実行する。こうもりの近くで決定ボタンを押し攻撃すると対象者IDのメッセージが表示されるが、犬の近くで攻撃をしても対象者IDのメッセージが表示されないことを確認する。
- これで、敵キャラクターとそうでないキャラクターの判別ができるようになった。
4.敵にダメージを与えられるようにする
- コモンイベント「対象者取得」を以下のように書き換える。
◆指定位置の情報取得:対象者ID, イベントID, ({攻撃X},{攻撃Y}) ◆スクリプト:var targetID = $gameVariables.value(4); : :if(targetID != 0 && ~$dataMap.events[targetID].note.indexOf("[対象者]")){ : : var mapID = this._mapId; : : if(!$gameSelfSwitches.value([mapID, targetID, "B"])){ : : $gameSelfSwitches.setValue([mapID, targetID, "A"], true); : : } : :}
- 敵キャラを選択し、「EVページ作成」ボタンを押し2ページ目を作る。内容は以下の通りにする。
出現条件 セルフスイッチ:A トリガー:並列処理 プライオリティ:通常キャラと同じ 画像:敵の正面画像を入れる オプション 歩行アニメ:チェックを入れる 足踏みアニメ:チェックを入れる 実行内容: ◆アニメーションの表示:このイベント, ダメージ ◆移動ルートの設定:このイベント (飛ばす, ウェイト) : :◇移動速度:5 : :◇プレイヤーの逆を向く : :◇一歩前進 : :◇一歩前進 : :◇移動速度:3 ◆セルフスイッチの操作:A = OFF
- ここまでやって、ゲームを実行し、敵を攻撃すると、赤く光るようになることが確認できる。次は、実際に敵にダメージを与える処理を追加する。
- マップ「初期設定」にある「起動時の初期化イベント」を下記のように書き換える。
◆画面のフェードアウト ◆メンバーの入れ替え:プレイヤーを加える ◆スクリプト:enemyDamage = new Array(999); : :for(var i = 0; i < 999; i++){ : : enemyDamage[i] = 0; : :} ◆スイッチの操作:#0001 キー入力受付 = ON ◆場所移動:バトルフィールド (8,6) ◆画面のフェードイン
- バトルフィールドマップにある敵キャラのイベントエディタを開き、2ページ目の実行内容を下記のように書き換える。
◆アニメーションの表示:このイベント, ダメージ ◆移動ルートの設定:このイベント (飛ばす, ウェイト) : :◇移動速度:5 : :◇プレイヤーの逆を向く : :◇一歩前進 : :◇一歩前進 : :◇移動速度:3 ◆スクリプト:enemyDamage[this.character(0)._eventId - 1] += 1; ◆条件分岐:スクリプト:enemyDamage[this.character(0)._eventId - 1] >= 3 ◆SEの演奏:Explosion1 (90, 100, 0) ◆移動ルートの設定:このイベント (ウェイト) : :◇すり抜けON : :◇不透明度:230 : :◇ウェイト:5フレーム : :◇不透明度:204 : :◇ウェイト:5フレーム : :◇不透明度:179 : :◇ウェイト:5フレーム : :◇不透明度:153 : :◇ウェイト:5フレーム : :◇不透明度:128 : :◇ウェイト:5フレーム : :◇不透明度:102 : :◇ウェイト:5フレーム : :◇不透明度:77 : :◇ウェイト:5フレーム : :◇不透明度:51 : :◇ウェイト:5フレーム : :◇不透明度:26 : :◇ウェイト:5フレーム ◆イベントの位置設定:このイベント, (0,0) ◆セルフスイッチの操作:B = ON ◆ :分岐終了 ◆セルフスイッチの操作:A = OFF
- 敵のイベントエディタを開き、「EVページ作成」ボタンを押し3ページ目を新たに作る。以下の内容のとおりにする。その他は標準設定のままでいい。
出現条件 セルフスイッチ:B 画像:なし
- ゲームを実行し、敵キャラに3回攻撃をすると、敵が消滅することが確認できる。これで攻撃をすると、敵キャラクターが倒せる状態になりました。
5.敵からダメージを受けるようにする
- 敵キャラクターのイベントエディタを開き、1ページ目の実行内容を以下のようにする。
◾トリガー イベントから接触 ◾実行内容 ◆条件分岐:決定キー押してる時間 = 1 ◆イベント処理の中断 ◆ :分岐終了 ◆SEの演奏:Damage1 (90, 100, 0) ◆アニメーションの表示:プレイヤー, ダメージ ◆移動ルートの設定:プレイヤー (飛ばす, ウェイト) : :◇180度回転 : :◇一歩前進 ◆HPの増減:パーティ全体, - 50 (戦闘不能を許可)
- これでゲームを実行し、プレイヤーが敵に当たると50ポイントのダメージを受けるようになる。
6.ダメージを受ける処理を少し変えてみる(ゲーム難易度調整)
敵から連続でダメージを受けるのを防ぐため、一度ダメージを受けたら一定時間プレイヤーが無敵になる処理を加える。
- スイッチ3番「主人公被ダメージ無敵」を新たに作る。スイッチの作り方は、データベースからコモンイベントを開き、スイッチ欄をクリックすると、スイッチの選択ウィンドウが表示されるので、ここでスイッチの新規作成ができる。
- 敵キャラクターのイベントエディタを開き、実行内容を以下に書き換える。
◆条件分岐:決定キー押してる時間 = 1 ◆イベント処理の中断 ◆ :分岐終了 ◆条件分岐:主人公被ダメージ無敵がON ◆イベント処理の中断 ◆ :分岐終了 ◆SEの演奏:Damage1 (90, 100, 0) ◆アニメーションの表示:プレイヤー, ダメージ ◆移動ルートの設定:プレイヤー (飛ばす, ウェイト) : :◇180度回転 : :◇一歩前進 ◆HPの増減:パーティ全体, - 50 (戦闘不能を許可) ◆スイッチの操作:#0003 主人公被ダメージ無敵 = ON
- コモンイベント「主人公被ダメージ無敵」を以下のように作る。
◾トリガー 並列処理 ◾スイッチ 0003:主人公被ダメージ無敵 ◾実行内容 ◆ウェイト:30フレーム ◆スイッチの操作:#0003 主人公被ダメージ無敵 = OFF
- これでゲームを実行し、敵キャラクターにあたりダメージを受けている瞬間(0.5秒間)は、追加のダメージを受けることがなくなる。
7.初期化処理のまとめ
- コモンイベント「初期化」を以下のように新たに作る。
◾名前 初期化 ◾トリガー なし ◾実行内容 ◆スクリプト:enemyDamage = new Array(999); : :for(var i = 0; i < 999; i++){ : : enemyDamage[i] = 0; : :} ◆スクリプト:for(var eventID = 1; eventID <= 999; eventID++){ : : var mapID = this._mapId; : : $gameSelfSwitches.setValue([mapID, eventID, "A"], false); : : $gameSelfSwitches.setValue([mapID, eventID, "B"], false); : :} ◆スイッチの操作:#0001 キー入力受付 = ON ◆スイッチの操作:#0003 主人公被ダメージ無敵 = OFF
- マップ「初期設定」で行っている起動時初期化イベントを下記のように書き換える。
◾名前 起動時初期化イベント ◾実行内容 ◆画面のフェードアウト ◆メンバーの入れ替え:プレイヤーを加える ◆コモンイベント:初期化 ◆場所移動:バトルフィールド (8,6) ◆画面のフェードイン
- ゲームを実行し、正常に動くことを確認する。
8.プレイヤーが回転斬りを使えるようにする
回転斬りは、決定キーを一定時間押しっぱなしにしてから離すと、発動するようにします。
- コモンイベント「剣を振る」の実行内容を以下のように書き換える。(1行目に変数5番「攻撃力」を追加する)
◆変数の操作:#0005 攻撃力 = 1 ◆変数の操作:#0002 攻撃X = プレイヤーのマップX ◆変数の操作:#0003 攻撃Y = プレイヤーのマップY ◆条件分岐:プレイヤーが下を向いている ◆アニメーションの表示:プレイヤー, 剣↓ ◆変数の操作:#0002 攻撃X -= 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0003 攻撃Y += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0003 攻撃Y -= 1 ◆コモンイベント:対象者取得 ◆ :分岐終了 ◆条件分岐:プレイヤーが左を向いている ◆アニメーションの表示:プレイヤー, 剣← ◆変数の操作:#0003 攻撃Y -= 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X -= 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0003 攻撃Y += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0003 攻撃Y += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X += 1 ◆コモンイベント:対象者取得 ◆ :分岐終了 ◆条件分岐:プレイヤーが右を向いている ◆アニメーションの表示:プレイヤー, 剣→ ◆変数の操作:#0003 攻撃Y -= 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0003 攻撃Y += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0003 攻撃Y += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X -= 1 ◆コモンイベント:対象者取得 ◆ :分岐終了 ◆条件分岐:プレイヤーが上を向いている ◆アニメーションの表示:プレイヤー, 剣↑ ◆変数の操作:#0002 攻撃X -= 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0003 攻撃Y -= 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0003 攻撃Y += 1 ◆コモンイベント:対象者取得 ◆ :分岐終了 ◆ウェイト:15フレーム ◆スイッチの操作:#0002 剣を振る = OFF
- 敵キャラをイベントエディタで開き、2ページ目の実行内容を書き換える。
◆アニメーションの表示:このイベント, ダメージ ◆移動ルートの設定:このイベント (飛ばす, ウェイト) : :◇移動速度:5 : :◇プレイヤーの逆を向く : :◇一歩前進 : :◇一歩前進 : :◇移動速度:3 ◆スクリプト:enemyDamage[this.character(0)._eventId - 1] += $gameVariables.value(5); ◆条件分岐:スクリプト:enemyDamage[this.character(0)._eventId - 1] >= 3 ◆SEの演奏:Explosion1 (90, 100, 0) ◆移動ルートの設定:このイベント (ウェイト) : :◇すり抜けON : :◇不透明度:230 : :◇ウェイト:5フレーム : :◇不透明度:204 : :◇ウェイト:5フレーム : :◇不透明度:179 : :◇ウェイト:5フレーム : :◇不透明度:153 : :◇ウェイト:5フレーム : :◇不透明度:128 : :◇ウェイト:5フレーム : :◇不透明度:102 : :◇ウェイト:5フレーム : :◇不透明度:77 : :◇ウェイト:5フレーム : :◇不透明度:51 : :◇ウェイト:5フレーム : :◇不透明度:26 : :◇ウェイト:5フレーム ◆イベントの位置設定:このイベント, (0,0) ◆セルフスイッチの操作:B = ON ◆ :分岐終了 ◆セルフスイッチの操作:A = OFF
- コモンイベント「キー入力受付」を以下のように書き換える。その際、スイッチ4番に「回転斬り」変数6番に「ため量」を新たに作る。
◆条件分岐:ボタン[決定]が押されている ◆条件分岐:決定キー押してる時間 = 0 ◆スイッチの操作:#0002 剣を振る = ON ◆ :分岐終了 ◆変数の操作:#0006 ため量 += 1 ◆条件分岐:ため量 = 40 ◆アニメーションの表示:プレイヤー, ためる ◆ :分岐終了 ◆変数の操作:#0001 決定キー押してる時間 += 1 ◆ :それ以外のとき ◆条件分岐:決定キー押してる時間 ≥ 1 ◆条件分岐:ため量 ≥ 40 ◆スイッチの操作:#0004 回転斬り = ON ◆ :分岐終了 ◆ :分岐終了 ◆変数の操作:#0006 ため量 = 0 ◆変数の操作:#0001 決定キー押してる時間 = 0 ◆ :分岐終了
- コモンイベント「初期化」を以下のように書き換える。
◆スクリプト:enemyDamage = new Array(999); : :for(var i = 0; i < 999; i++){ : : enemyDamage[i] = 0; : :} ◆スクリプト:for(var eventID = 1; eventID <= 999; eventID++){ : : var mapID = this._mapId; : : $gameSelfSwitches.setValue([mapID, eventID, "A"], false); : : $gameSelfSwitches.setValue([mapID, eventID, "B"], false); : :} ◆変数の操作:#0006 ため量 = 0 ◆スイッチの操作:#0001 キー入力受付 = ON ◆スイッチの操作:#0003 主人公被ダメージ無敵 = OFF
- コモンイベント「回転斬り」を作成する。
◾名前 回転斬り ◾トリガー 並列処理 ◾スイッチ 0004 回転斬り ◾実行内容 ◆スイッチの操作:#0001 キー入力受付 = OFF ◆変数の操作:#0005 攻撃力 = 2 ◆変数の操作:#0002 攻撃X = プレイヤーのマップX ◆変数の操作:#0003 攻撃Y = プレイヤーのマップY ◆アニメーションの表示:プレイヤー, 回転斬り ◆変数の操作:#0002 攻撃X -= 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0003 攻撃Y += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X += 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0003 攻撃Y -= 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0003 攻撃Y -= 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X -= 1 ◆コモンイベント:対象者取得 ◆変数の操作:#0002 攻撃X -= 1 ◆コモンイベント:対象者取得 ◆ウェイト:50フレーム ◆スイッチの操作:#0001 キー入力受付 = ON ◆スイッチの操作:#0004 回転斬り = OFF
- 敵をイベントエディタで開き、1ページ目の実行内容を以下のように書き換える。こうすることで、ため中に敵からダメージを受けたら、ため量が0になります。
◆条件分岐:決定キー押してる時間 = 1 ◆イベント処理の中断 ◆ :分岐終了 ◆条件分岐:主人公被ダメージ無敵がON ◆イベント処理の中断 ◆ :分岐終了 ◆SEの演奏:Damage1 (90, 100, 0) ◆アニメーションの表示:プレイヤー, ダメージ ◆移動ルートの設定:プレイヤー (飛ばす, ウェイト) : :◇180度回転 : :◇一歩前進 ◆HPの増減:パーティ全体, - 50 (戦闘不能を許可) ◆変数の操作:#0006 ため量 = 0 ◆スイッチの操作:#0003 主人公被ダメージ無敵 = ON
- これでゲームを実行し、決定キーを長押しすると、回転斬りができるようになります。
9.HPゲージを表示させる
以下のプラグインを使うことで、画面にHPゲージを表示させることができます。
頂いた質問についての解答
剣を振るアニメーションについて
こんにちは。 こちらの記事と参考リンクを参考にさせて頂いてゲームを作成しているのですが、基本的には上手くいっているのですが一点変な挙動があり、その解決方法がわかりません。 最初の初期設定MAPで主人公の剣を振るエフェクトが一回だけ自動的に出るのですが、これは何故でしょうか? 解決方法があれば教えて頂きたいです。
「主人公の剣を振るエフェクトが出る」ということなので、剣を振るアニメーション表示をしている部分であるコモンイベント「剣を振る」が関係している可能性があります。
このコモンイベントの実行方法は、
- トリガーは並列処理
- 出現条件はスイッチ2番「剣を振る」がON
なので、何らかの理由でスイッチ2番「剣を振る」がONになっている可能性が考えられます。
スイッチ2番「剣を振る」のスイッチ状態をテストプレイ実行時にリアルタイムトレースしてみてください。
どのタイミングでスイッチ2番がONになっているのかがわかれば、原因が判明すると思います。
デバッグする際は、以下のようなプラグインを使うと効率的にデバッグできます。
イベントの実行順序や実行状況が見えるように確認するには、以下のプラグインも大変便利です。
また、他に考えられることは、コモンイベント「キー入力受付」で、プレイヤーのボタン操作とスイッチ2番の状態を連携させているので、コモンイベント「キー入力受付」の内容に間違いがないか確認してみてください。
アクションRPG制作は大変ですが、ぜひトライしてみてください!