【Unity】RPGを作るチュートリアルその50 戦闘中の行動を登録するクラスの実装
- 2025.03.24
- RPGチュートリアル
- RPG, Unity, ゲーム開発, チュートリアル

シンプルなRPGをUnityで作るチュートリアルシリーズの50回目です。50回まで到達しましたが、100回までに終わるのでしょうか……(未知)
まだまだ先は長いですが、時間のある時にごゆるりとお付き合いください。
第49回では選択されたコマンドに応じた、戦闘中の行動を処理する機能について、全体の方針を決めて実装の準備を進めていきました。
今回は選択されたコマンドに応じて行動を登録するためのクラスを作成していきます。
制作環境
MacBook Pro 2023 Apple M2 Max
Unity6 (6000.0.30f1) Silicon
作業内容と順序
シンプルなRPGを作る上でどんな作業が必要か、どんな順番で作っていくと良さそうか、別ページで検討しました。基本的にこの流れに沿って進めていきます。
チュートリアルの一覧
このシリーズ全体の一覧は以下のページにまとめています。
前回の内容
前回は選択されたコマンドに応じた、戦闘中の行動を処理する機能について、全体の方針を決めて実装の準備を進めていきました。
コマンドに応じた行動を登録するクラス
ユーザがコマンド入力を行なったあと、それを元に戦闘中の行動に変換して登録するクラスを作成したいと思います。行動の登録はユーザ側のみならず、敵キャラクター側も行うので、それぞれに対応した形でメソッドを用意していきます。
ユーザ側が選べるコマンドは、攻撃、魔法、アイテム、逃げるの4つです。敵キャラクター側が選べるコマンドは定義データの作成時に実装した「EnemyActionCategory」に合わせます。といっても今回実装する範囲では、攻撃か魔法を選択するだけなので、それに対応した登録メソッドを用意したいと思います。
Projectウィンドウから「Assets/Scripts/Battle/Action」のフォルダに移動し、MonoBehaviourのスクリプトファイルを作成します。名前は [BattleActionRegister] にしました。

作成した「BattleActionRegister」の中身は以下のように記載しました。
各メソッドの処理後に、行動を登録するために「BattleActionProcessor」の登録メソッドを呼び出しています。そのため、InitializeRegister()のメソッドで参照をフィールドにアサインしています。
GetCharacterParameterRecord()のメソッドでは、主人公の現在のレベルに応じたパラメータレコードを取得しています。レコード内の素早さの値を行動の内容にセットすることで、「BattleActionProcessor」の中で行動の優先度を計算していきます。
SetFriendAttackAction()以降のメソッドでは味方側(Friend)、敵側(Enemy)の行動を登録しています。攻撃系のメソッドなら、行動者のIDと攻撃対象のIDを指定して行動内容にセットします。行動者が味方かどうか、攻撃対象が味方かどうかのフラグについては、呼び出すメソッドに応じてセットするようにしています。
魔法やアイテムを使用する場合は、そのIDも引数として渡すようにしています。
今回の実装だとターゲット選択を行わない形式なので、呼び出すメソッドを切り替えることで対象を判別しています。ターゲット選択がある場合は、それも踏まえたメソッドを用意しておくと良いかと思います。
スクリプトのアタッチ
スクリプトを保存したら、ゲームオブジェクトの作成してスクリプトをアタッチしましょう。
Hierarchyウィンドウから「BattleParent」の下にある「Managers」のゲームオブジェクトを選択します。「Managers」の下に、空のゲームオブジェクトを作成しましょう。名前は [BattleActionRegister] にしました。

Inspectorウィンドウで今回作成した「BattleActionRegister」をアタッチします。

今回もまだ単独で動作確認するのは大変なので、後続の作業が終わってから確認していきましょう。
今回のブランチ
まとめ
今回は選択されたコマンドに応じて行動を登録するためのクラスを作成しました。行動処理の部分はやることが多いので、一通り実装してから動作を確認していきましょう。
次回は敵キャラクターの行動を決定するにあたって、敵キャラクターの戦闘中のステータスを保持するクラスを作成していきます。
ゲーム開発の攻略チャートを作りました!
-
前の記事
【Unity】RPGを作るチュートリアルその49 戦闘中の行動を処理する機能の実装準備 2025.03.22
-
次の記事
【Unity】RPGを作るチュートリアルその51 戦闘中の敵キャラクターの状態を管理するクラス 2025.03.25
コメントを書く