【Unity】RPGを作るチュートリアルその12 アイテム関連の定義データの作成

【Unity】RPGを作るチュートリアルその12 アイテム関連の定義データの作成

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

第11回ではRPG内で使用する定義データのうち、敵キャラクターに関する定義データを作成しました。データ内から画像を参照するため、モック用の画像に関しても作成しました。

今回は引き続き定義データの実装を進めていきます。消費アイテムや装備品など、アイテム関連の定義を作成していきましょう。

 

 

制作環境

MacBook Pro 2023 Apple M2 Max

Unity6 (6000.0.30f1) Silicon

 

作業内容と順序

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

 

前回の内容

前回は敵キャラクターに関する定義データを実装しました。

 

アイテムのカテゴリ分け

アイテムの定義データを作成していくにあたって、アイテムのおおまかなカテゴリ(種類)で分けていくと便利です。冒頭でも少し触れましたが、消費アイテムや装備品など、種類によって扱い方が異なるので、データ上でカテゴリを見分けられるようにしたいと思います。

カテゴリに関してはEnumで分ける方法、intなどの数値で分ける方法がありますが、今回はEnumで設定していきます。Inspectorウィンドウでカテゴリを選択する際に、名前で見分けられると便利なためです。

Enumでは以下の項目を作成します。

  • カテゴリなし
  • 消費アイテム
  • 武器
  • 防具

今回は導入しませんが、ゲームによってはイベントアイテムなどもカテゴリとしてあると便利かもしれません。イベントアイテムを単純にカテゴリなしにしておくよりは、後で見たときに使い道が把握しやすくなります。

「カテゴリなし」を先頭にしているのは、デフォルトでそちらに振り分けられるようにするためです。新規作成したアイテムデータのカテゴリ設定を忘れることは疲れているとよくあるので、データが不十分なアイテムが使用されないようにしています。

また、今回はアイテムのカテゴリーで装備可能な場所を判別します。武器という括りでも、右手に装備するのか、左手に装備するのか、といった形で装備可能箇所が複数ありそうな場合は、アイテムのカテゴリとは別に装備可能箇所のEnumなどを用意すると良いかもしまれせん。

 

Enumの作成

上の方針に沿ってEnum用のスクリプトファイルを作成していきます。Projectウィンドウで「Assets/Scripts/Enums」のフォルダに移動し、空のスクリプトファイルを作成します。名前は [ItemCategory] にしました。

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

 

上からカテゴリなし、消費アイテム、武器、防具です。Inspectorウィンドウではこの項目をプルダウンで切り替えてカテゴリを選択するようにしましょう。

 

アイテムの定義データの作成

続いてアイテムの定義データ用のクラスを作成します。Projectウィンドウから「Assets/Scripts/Data」のフォルダに移動し、ScriptableObjectのスクリプトを作成します。名前は [ItemData] にしました。シンプルですね。

アイテムの定義データ用のクラス
アイテムの定義データ用のクラス

 

アイテムの定義データとして必要な項目は以下のとおりです。

  • ID
  • 名前
  • 説明文
  • カテゴリ
  • 効果量
  • 使用可能回数
  • 攻撃力の補正値
  • 防御力の補正値
  • 素早さの補正値
  • 価格

後で項目を追加するとなると若干手間なので、ある程度汎用的に使える形で項目を用意しています。この辺りは他のゲームを参考にしつつ、どんな項目が必要か考えてみると良いかもしれません。

上の項目を踏まえて「ItemData」のクラスでは以下のように記載しました。

各フィールド名はほぼ直訳のような形にしています。パラメータに影響する部分は分かりやすいように同じ名前にしました。

 

スクリプトを保存したら定義データのScriptableObjectを作成していきます。同じ種類のデータでまとめるため、アイテムデータ用のフォルダを作成しましょう。Projectウィンドウの「Assets/Data」のフォルダにて、新しくフォルダを作成します。名前は [Items] にしました。

アイテムデータ用のフォルダ
アイテムデータ用のフォルダ

 

作成した「Items」のフォルダに移動し、コンテキストメニューの [Create] -> [Scriptable Objects] -> [SimpleRpg] -> [ItemData] からScriptableObjectのアセットファイルを作成します。

アイテムデータの作成
アイテムデータの作成

 

名前は [ItemData_0001] にしました。こちらも敵キャラクターの定義データと同様に0埋め4桁でIDを末尾につけています。といっても今回作るアイテムデータは数個なので4桁までは不要だったかもしれません。

名前の変更
名前の変更

 

作成したデータはInspectorウィンドウから設定していきましょう。

アイテムの情報を設定
アイテムの情報を設定

 

ここで作成したいアイテムデータは以下の5種類です。

  • 薬草(消費アイテム) HP回復用
  • 短剣(武器)
  • ロングソード(武器)
  • 皮の胸当て(防具)
  • レザーアーマー(防具)

回復アイテムが1種類、武器が2種類、防具が2種類です。武器と防具はお店で上位品が買えるようにしたいと思います。

それぞれのアイテムの設定は以下のようにしてみました。設定値は任意のものに変えていただいてもOKです。

ID 1 2 3 4 5
名前 薬草 短剣 ロングソード 皮の胸当て レザーアーマー
説明文 体力を回復する効能のある草です。 身を守るための短剣です。 刃渡りの長い剣です。 皮をなめして作った胸当てです。 広い範囲を守れる革製の鎧です。
カテゴリ
ConsumableItem
Weapon
Weapon
Armor
Armor
効果量 30 0 0 0 0
使用可能回数 1 0 0 0 0
攻撃力の補正値 0 3 6 0 0
防御力の補正値 0 0 0 3 6
素早さの補正値 0 0 0 0 0
価格 5 20 50 10  30

 

価格に関してはまた後ほど調整していきましょう。5つのアイテムを作成すると以下のようにデータが並びます。今回は手作業で進めるとは言ったものの、Inspectorウィンドウから設定していくのはちょっと大変ですね。ここまでの作業で区切りを入れましょう。

アイテムデータの作成後
アイテムデータの作成後

 

今回のブランチ

 

まとめ

今回は定義データの作成としてアイテムに関する定義データを作成しました。カテゴリで処理を分けるのは大切なので、事前にどのようなものが必要なのかある程度想定して定義しておくと良いかと思います。

次回は引き続き定義データの作成として、魔法データの作成を行います。といっても複数の魔法は用意せず、回復の魔法だけになりそうですが、仕組みだけ入れておきましょう。

 

     

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

CTA-IMAGE

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


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


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