【Unity】RPGを作るチュートリアルその34 キャラクター全体の状態管理クラスの編集

【Unity】RPGを作るチュートリアルその34 キャラクター全体の状態管理クラスの編集

シンプルなRPGをUnityで作るチュートリアルシリーズの34回目です。この記事が投稿された直前の土日は投稿がなかったのですが、モンハンワイルズの発売日直後だったため、そちらに時間を割いてしまったという説が有力です。

第33回では便利クラスとして、装備品によるパラメータ補正の値を計算するクラスを追加しました。

今回は以前作成したキャラクター全体の状態を管理するクラスに機能を追加していきましょう。アイテムデータの取得や、キャラクターデータの取得などの機能を作ったので、色々と追加できる機能があります。

 

 

制作環境

MacBook Pro 2023 Apple M2 Max

Unity6 (6000.0.30f1) Silicon

 

作業内容と順序

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

 

チュートリアルの一覧

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

 

前回の内容

前回は便利クラスとして、装備品によるパラメータ補正の値を計算するクラスを追加しました。

 

キャラクター全体の状態管理のクラスに機能を追加

キャラクター全体の状態を管理するクラスは以前作成したのですが、その時点ではまだ定義データの管理クラスを作成していなかったため、いくつか実装を後回しにした機能がありました。

今回はその後回しにしていた機能として、

  • 装備品を含めたパラメータを取得するメソッド
  • キャラクターのHPやMPを増減させるメソッド
  • アイテムを使用するメソッド
  • レベルアップを確認するメソッド

を実装したいと思います。

 

キャラクター全体の状態管理のクラスを変更

「Assets/Scripts」にある「CharacterStatusManager」のスクリプトファイルを編集していきましょう。

先に全文を表示します。

 

追加したメソッドをそれぞれ個別に説明していきます。なお、「Debug.LogWarning()」の処理を入れたため、先頭で「using UnityEngine;」を追加しています。

 

装備品を含めたパラメータを取得するメソッド

指定したIDのキャラクターに関して、装備品のフィールドを確認して、それを含めたパラメータを取得するメソッドです。前回作成した装備品のパラメータを計算するクラスの機能を使っています。

パラメータ表から現在のレベルのレコードを取得して、その値と装備品による補正値を足し合わせたものを戻り値として返すようにしています。

 

キャラクターのHPやMPを増減させるメソッド

指定したキャラクターの現在のHPやMPを増減させるメソッドです。

引数として増減させるHP/MPを渡すようにしています。HPやMPが最大値を超えていれば最大値に修正、0を下回るなら0に修正する処理を入れています。HPの場合は0を下回ったら撃破されたフラグを立てるようにしています。

 

アイテムを使用するメソッド

アイテムを使用する処理も入れておきましょう。

パーティのアイテム情報を確認して、対応するアイテム情報を取得後、使用回数を増やしています。もしアイテムの定義データで決めておいた使用可能回数に達していたら、そのアイテムの個数を1つ減らすようにしています。もしアイテムの所持数が0になった場合は、画面に表示されないようにリストから削除するようにしています。

戦闘に関連する部分を先に作る関係で、アイテムを使用する機能を追加していますが、イベント関係を実装していくタイミングでアイテムを増加させる処理も入れていきたいと思います。

 

レベルアップを確認するメソッド

敵を倒して経験値を入手した際に、キャラクターがレベルアップしたかどうかをbool値で返すメソッドです。

対象のキャラクターの経験値表を確認して、現在の経験値に対応するレベルの値を取得して、現在のレベルより大きい値であればレベルアップしたと判断します。また、この時に現在のレベルの値も更新するようにします。

 

スクリプトを保存してコンパイルエラーがなければ今回は完了です。

 

今回のブランチ

 

まとめ

今回は以前作成したキャラクター全体の状態を管理するクラスに機能を追加しました。

次回は戦闘機能の作成に入る前に、デバッグ用の機能としてログのラッパークラスを作成したいと思います。UnityのDebugクラスを使う方法も良いかと思いますが、ログのメッセージにプレフィックスをつけることで、Unityデフォルトのログなのか、自分が仕込んだログなのかを区別しやすくしたいと思います。また、一括でログの出力を止める機能もつけたいと思います。

 

     

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

CTA-IMAGE

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


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


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