【Unity】RPGを作るチュートリアルその57 逃走に関する行動を処理するクラス

【Unity】RPGを作るチュートリアルその57 逃走に関する行動を処理するクラス

シンプルなRPGをUnityで作るチュートリアルシリーズの57回目です。

第56回では各行動を処理するクラスのうち、アイテムの行動を処理するクラスを実装しました。

今回は同様に各行動を処理するクラスのうち、戦闘からの逃走に関する行動を処理するクラスを実装していきます。

 

 

制作環境

MacBook Pro 2023 Apple M2 Max

Unity6 (6000.0.30f1) Silicon

 

作業内容と順序

シンプルなRPGを作る上でどんな作業が必要か、どんな順番で作っていくと良さそうか、別ページで検討しました。基本的にこの流れに沿って進めていきます。

 

チュートリアルの一覧

このシリーズ全体の一覧は以下のページにまとめています。

 

前回の内容

前回は各行動を処理するクラスのうち、アイテムの行動を処理するクラスを実装しました。

 

アイテムに関する行動を処理するクラス

 

戦闘中の行動処理の概要
戦闘中の行動処理の概要

 

戦闘中の行動処理については、全体の制御を「BattleActionProcessor」で行なって、攻撃や魔法などの個別の行動の処理については、それぞれクラスを追加してそちらで処理させていきたいと思います。

今回は逃げるコマンドに関する行動を処理するクラスを実装していきます。

また、各行動処理のクラスで共通してメソッドを実装するように、インタフェースを実装していきます。このインタフェース自体は、第49回で実装済みなので、こちらもご参照ください。

 

戦闘からの逃走に関する行動を処理するクラスの作成

前回や前々回同様、戦闘からの逃走に関する行動を処理するためのスクリプトファイルを作成していきましょう。

  • 処理内で必要な参照用フィールド
  • セットアップ用メソッド
  • 行動を処理するメソッド
  • メッセージの表示を制御するメソッド

を実装していきたいと思います。セットアップ用のメソッドと行動を処理するメソッドはインタフェースによって強制されるものです。基本的には攻撃と同じようなメソッドを追加していきます。

Projectウィンドウから「Assets/Scripts/Battle/Action」のフォルダに移動し、MonoBehaviourのスクリプトファイルを作成します。名前は [BattleActionProcessorRun] にしました。

スクリプトファイルの作成
スクリプトファイルの作成

 

作成した「BattleActionProcessorRun」の中身は以下のように記載しました。

フィールドとしては、必要なクラスへの参照を保持するようにしています。敵キャラクターの逃亡フラグを立てたり、敵キャラクターの画像を消したりする関係で、攻撃の行動処理の時と似たような参照になっています。

SetReferences()の中でそのフィールドに対して参照をアサインしていて、「BattleManager」を通して参照を取得するのがメインになっています。こちらも他の行動処理クラスと同じですね。

ProcessAction()では引数の行動をもとに、逃走の行動を処理していきます。メッセージを表示するコルーチンを起動する前に、逃走が成功したかどうかの判定を行なっています。このフラグをもとに、表示するメッセージを変えていきます。

ShowRunMessage()ではまず逃走を試みたメッセージを表示し、成功したらその旨を「BattleManager」に通知し、失敗したら「まわり込まれた!」と画面上にメッセージを表示します。「BattleManager」のコールバック用メソッドはこの後作成していきましょう。

敵キャラクターが逃げた場合の分岐も作成してありますが、今回のチュートリアルの範囲では敵キャラクターは逃げない想定なので、必要そうな機能を入れて分岐させています。敵キャラクターが逃げた場合は逃亡フラグを立てて、経験値やゴールドの計算からは除外する想定です。

 

既存のクラスの修正

今回実装した機能と繋ぎ合わせるため、既存のクラスも修正していきます。対象は、

  • BattleManager

です。

 

BattleManagerの修正

「BattleManager」では

  • 味方が逃げた時のコールバックメソッドを追加
  • 敵が逃げた時のコールバックメソッドを追加
  • 戦闘の終了処理のメソッドを追加

を行います。

スクリプトファイルの末尾、既存のOnGameover()の後ろにメソッドを3つ追加しました。

OnRunaway()は味方が逃げた時のコールバック、OnEnemyRunaway()は敵が逃げた時のコールバックです。味方が逃げた場合は経験値やゴールドなど、戦闘結果の処理は行わないため、そのまま戦闘を終了するOnFinishBattle()に進みます。

敵が逃げた場合は、戦闘結果のフェーズに進むため、フェーズの値を変更しています。戦闘結果のフェーズについてはチュートリアルの後の回で作成するので、今回はコンソールにメッセージを表示するところまでで留めます。

 

スクリプトのアタッチ

スクリプトを保存したら、ゲームオブジェクトの作成してスクリプトをアタッチしましょう。

 

BattleActionProcessorRunのアタッチ

Hierarchyウィンドウから「BattleParent」の下にある「Managers」から、「BattleActionProcessor」のゲームオブジェクトを選択します。「BattleActionProcessor」の下に、空のゲームオブジェクトを作成しましょう。名前は [BattleActionProcessorRun] にしました。

ゲームオブジェクトの作成
ゲームオブジェクトの作成

 

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

スクリプトのアタッチ
スクリプトのアタッチ

 

動作確認については、行動関係のクラスができたタイミングで行いましょう。

 

今回のブランチ

 

まとめ

今回は戦闘からの逃走に関する行動を処理するクラスを実装しました。逃走に関してはそのまま戦闘の完了に繋がっていくため、戦闘の全体を管理するクラスと連携させていくのも大切かと思います。

次回は行動全体を管理するクラスから、各行動を処理するクラスに対する呼び出し部分を作成します。

 

     

ゲーム開発の攻略チャートを作りました!

CTA-IMAGE

「ゲームを作ってみたいけど、何から手を付けていいか分からない!」


そんなお悩みをお持ちの方向けに、todoがアプリをリリースした経験を中心に、ゲーム作りの手順や考慮すべき点をまとめたe-bookを作成しました。ゲーム作りはそれ自体がゲームのように楽しいプロセスなので、「攻略チャート」と名付けています。


ゲームを作り始めた時にぶつかる壁である「何をしたら良いのか分からない」という悩みを吹き飛ばしましょう!