【Unity】RPGを作るチュートリアルその11 敵キャラクターの定義データを実装

【Unity】RPGを作るチュートリアルその11 敵キャラクターの定義データを実装

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

第10回ではRPG内で使用する定義データの実装方針としてScriptableObjectを使う方向性で進めることに決め、操作キャラクターのレベルアップに必要な経験値の一覧や、レベルに対応するパラメータの一覧を定義データとして実装しました。

今回は引き続き定義データの実装を行なっていきます。対象は敵キャラクターで、画像とも紐付けていきましょう。

 

 

制作環境

MacBook Pro 2023 Apple M2 Max

Unity6 (6000.0.30f1) Silicon

 

作業内容と順序

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

 

前回の内容

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

 

敵キャラクターの定義データ

今回作成するシンプルなRPGでは敵キャラクターを3種類用意します。フィールド上でランダムエンカウントする敵が2種類と、ボスキャラクターが1種類です。戦闘は1対1で行う予定なので、敵の出現グループ設定などは入れず、指定した敵キャラデータの中からランダムに出現するようにします。(といっても2種類しかいませんね)

定義データの中に入れたいのは以下の項目です。

  • ID
  • 名前
  • 敵の画像
  • HP
  • MP
  • 攻撃力
  • 防御力
  • 素早さ
  • 経験値
  • ゴールド

敵キャラを区別するため、IDの項目を入れています。味方キャラクターに関しては今回は1人しかいないので入れていませんが、複数人いる場合は味方側でもIDで区別すると良いかもしれません。

また、画像についてもデータと紐づけていきます。IDを割り振っているので、画像は定義データと別で管理してIDを使って読み込むなどの方法もありますが、今回はまとめて定義データで関連付けしておきます。オンラインのゲームでは別で管理した方が修正等の対応がしやすいかもしれません。

基本的なパラメータは操作キャラクター側と共通していて、それに加えて経験値やゴールドの項目も追加しています。今回は導入しませんが、アイテムドロップなどがある場合には、対象のアイテムやドロップ確率、条件などを追加すると良いかと思います。

敵が使う魔法やスキルに関しては、また別途必要になったときに実装予定です。

 

敵キャラクターのモック画像

画像をデータ紐付ける関係で、モック用の画像を用意しておきます。戦闘関連のテストでもそのまま使えるので、この段階で簡単な画像を用意しちゃうと楽かもしれません。フリー素材を使う予定なら、この部分はかなり省力化できるかと思います。

とりあえず使えればいいや、の精神で以下の画像を用意しました。チュートリアル中は下の画像を使っていただいても良いですし、ご自身で用意していただいても良いかと思います。

スライム
スライム

 

ゴブリン
ゴブリン

 

ボスゴブリン
ボスゴブリン

 

普通のゴブリンとボスゴブリンでは色を変えて武器を持たせるだけ、という古式ゆかしいファミコンスタイルで差分を作っています。色のパレットを変えて差分を作る方式は最近はあまり見なくなってきたかも……?

サイズは64 * 64で、これを元に後の工程で戦闘のUIを作っていきます。戦闘時の表示サイズは、敵画像の最小サイズと最大サイズをある程度見積もっておくと配置しやすくなります。

 

画像のインポート

上の画像をインポートしておきます。Projectウィンドウの「Assets/Images」のフォルダで、新しく敵キャラ用画像を格納するフォルダを作成します。名前は [Enemies] にしました。

敵キャラの画像用フォルダを作成
敵キャラの画像用フォルダを作成

 

作成した「Enemies」のフォルダに移動して、敵キャラ用画像3種類をインポートします。

敵キャラ用画像のインポート
敵キャラ用画像のインポート

 

インポートした3つの画像を複数選択した状態で、Inspectorウィンドウからインポート設定を変更していきます。まずは上の領域で「Sprite Mode」の項目を [Single] に、「Pixels Per Unit」の項目を [32] に変更します。

インポート設定の変更
インポート設定の変更

 

続いて下の領域では「Filter Mode」の項目を [Point (no filter)] に、「Compression」の項目を [None] に変更します。変更が終わったら画面右下の [Apply] ボタンをクリックして変更を適用します。

インポート設定の変更
インポート設定の変更

 

敵キャラの画像に関してはこの後インポートしない予定ではあるものの、何らかの理由で再インポートすることになった場合に備えて、インポート設定のプリセット化もしておきましょう。任意の敵キャラ画像をProjectウィンドウで選択したら、Inspectorウィンドウの右上のプリセットボタンをクリックしてウィンドウを表示し、[Create New …] をダブルクリックします。

プリセットの作成
プリセットの作成

 

保存先を選択するウィンドウが表示されるので、いつものように「Assets/Presets」のフォルダを選択します。ファイル名は [EnemyImporter] にしました。[Save] ボタンをクリックして保存しましょう。

保存先とファイル名の設定
保存先とファイル名の設定

 

定義データ用クラスの作成

続いて定義データ用のクラスを作成していきます。今回はリスト形式での保持ではなく、ScriptableObject用のクラスに必要なパラメータ類を実装していきます。

Projectウィンドウで「Assets/Scripts/Data」のフォルダに移動して、ScriptableObjectのスクリプトを作成します。名前は [EnemyData] にしました。

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

 

作成した「EnemyData」のクラスは以下のように記載しました。

IDや名前に関してもInspectorウィンドウから設定しておきましょう。画像はSpriteの形式で参照させるようにします。HPなどのパラメータ関連の部分は操作キャラクターとも共通しています。また、敵を倒した時の経験値やゴールドの値についてもフィールドを用意しておきます。

スクリプトを保存したら、データの作成に移ります。データは敵キャラクターの数だけ増えるので、「Assets/Data」に敵キャラクター用のフォルダを作成します。名前は [Enemies] にしました。

敵キャラのデータ用フォルダを作成
敵キャラのデータ用フォルダを作成

 

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

定義データの作成
定義データの作成

 

名前は [EnemyData_0001] にしました。同じ種類のデータがあるときには、IDで区別すると管理しやすくなるかと思います。また、IDの値は0埋めにしておくとID順に並びやすくなります。0埋めがないとID1の次にID10がきたりするためです(1敗)

名前の変更
名前の変更

 

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

敵キャラのパラメータ設定
敵キャラのパラメータ設定

 

私は以下の表のように設定してみました。戦闘に関するパラメータについては後から調整していきましょう。

Enemy Id 1 2 3
Enemy Name スライム ゴブリン ボスゴブリン
Sprite slime goblin goblin_boss
Hp 5 12 30
Mp 0 0 3
Strength 5 10 18
Guard 2 6 12
Speed 4 6 8
Exp 2 4 15
Gold 3 5 50

 

ちょっとずつ強くなる想定でパラメータの値を増やしています。スライムはレベル1、ゴブリンはレベル2から3、ボスゴブリンはレベル4くらいで戦う想定で値を入れてみました。

ボスゴブリンはこのシンプルRPGのラスボスなので経験値やゴールドは不要なのですが、気分的にたくさんもらえたら嬉しいので多めに設定してあります。また、戦闘中の行動パターンとして1回だけ回復魔法を使わせたいので、MPを設定してあります。

3体の敵キャラのデータを設定できたら今回の作業は完了です。

 

今回のブランチ

 

まとめ

今回は定義データの作成として敵キャラクターに関する定義データを作成しました。魔法やスキルなど、この後作成する定義データの情報も必要になってはきますが、先にそちらを作成した後、また戻ってきて行動パターンなども含めて作成していきましょう。

敵キャラを先に作っておいたのは、「この敵だったらどんな魔法を使うかな?」とこの後の作業も想像しながら作っていきたかったためです。ある程度必要な魔法も見積もれるので、魔法を作っていくときにイメージもしやすくなるかと思います。そうは言っても、敵キャラを作って、魔法を追加して、また敵キャラを作って、魔法を追加して……とサイクル的に作業を行ったり来たりすることも多いかもしれません。

次回は引き続き定義データの作成として、アイテムデータの作成を行います。消費アイテム、装備品、といったカテゴリ分けもしていきましょう。

 

     

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

CTA-IMAGE

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


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


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