【Unity】3DダンジョンRPGの作り方 第14回|アイテム・装備システムの実装 | Unity入門の森 ゲームの作り方

【Unity】3DダンジョンRPGの作り方 第14回|アイテム・装備システムの実装

Unity 3DダンジョンRPGの作り方 ~世界樹・ウィザードリィ風ゲームを作ろう~

現場レベルのゲーム制作が、すべてここで学べます。

【永久会員チケット】

永久会員チケット|Unity入門の森

全講座を見放題で学ぶ

ソースコード・素材・プロジェクトすべて公開。
Unityの基礎から応用まで、一生使えるスキルを体系的に習得。

この記事は3DダンジョンRPGの作り方に講座の第14回目です。

前回はアクターの職業ごとにスキルツリーを作成し、街シーンからスキルの習得・レベルアップを行えるようにしました。いわゆるスキルツリーシステムを構築しました。

前回の記事:

【Unity】3DダンジョンRPGの作り方 第13回|スキルツリー成長システムを実装する
この記事は3DダンジョンRPGの作り方講座の第13回になります。前回まででキャラクターの作成からダンジョンの探索、戦闘までの流れを一通り実装しました。前回の記事:今回は街シーンで職業ごとに決められたリストの中からアクターがスキルを選んで習得...

今回はこのゲームの機能をさらに拡充するためにアイテムシステムの実装を行います。装備品によってキャラクターを強くできるだけでなく、ダンジョンでアイテムを収集することによるやり込み性の向上も期待できます。

装備は職業別に装備できる武器が異なっている&頭、胴、足など部位別にアイテムを装備できる実装にしています。

ウィザードリィや世界樹の迷宮だけでなく元祖ドラクエなどオーソドックスなRPGで採用されている形式です。装備品によって戦略性が広がり、あなたのゲーム制作スキルがグッとレベルアップする。そんな回となっています。

【ゲームの作り方講座プレゼント中!】

アイテムシステムの仕様

このゲームでは以下の3種別のアイテムが存在します。

アイテム種別 クラス名 説明
武器アイテム WeaponItemData 各アクターに1つずつ装備できる
攻撃スキル使用時の与ダメージが上昇する
防具アイテム ArmorItemData 各アクターの各部位ごとに装備できる
(部位:頭・胴体・脚・左手の4種)
攻撃スキルを受けた時の被ダメージが減少する
消費アイテム ConsumableItemData 装備できないアイテム全般が分類される
戦闘中またはダンジョン探索時に使用でき、HP回復などの効果をもつアイテムもある
また、合成素材となりショップでのアイテム解放に利用できるアイテムもある

いずれのアイテムも今後の章にて実装するダンジョンイベントにて入手可能です。

また、街シーンで追加されるショップ画面にてGoldを支払って購入することも可能です。
ショップに陳列されるアイテムは初期状態では購入不可とし、合成素材のアイテムを支払うことで購入可能にする設定にもできます。

この講座はここから

  1. アイテムシステムの根本の実装
  2. アクターにアイテムを装備するシステムの実装
  3. 装備品の効果実装(戦闘ダメージ計算式の実装)
  4. ショップ画面の実装

という順番で進んでいきます。

RPGのアイテムシステムの実装

まずはアイテムシステムを構築していきます。

アイテムクラス作成

前述のとおり、アイテムのクラスは武器・防具・消費アイテムの3種に分けて作成しますが、それぞれ共通する部分もあるため基底クラスと派生クラスという形で実装していきます。

保存先は任意ですがこの講座では全てScripts > Definesフォルダに作成しています。

ItemData.cs (新規)

アイテム名や説明文は全アイテムで必要になるので共通の基底クラスで宣言しておきます。

effectTypeとeffectValueはそれぞれ特殊な装備アイテムや、消費アイテムを使用した時の効果を示すもので、その場合の処理を作成するタイミングまでは気にしなくてOKです。

また、こちらは基底クラスになるのでScriptableObjectとして作成できる必要はありません。

WeaponItemData.cs (新規)

ItemDataを継承して作成する武器アイテムクラスです。ScriptableObjectとして作成できるよう設定します。

武器にはそれぞれ攻撃力・重量の数値を入力でき、弓矢などの遠距離武器であればその設定を行えるフラグも用意します。

また、全ての武器は職業ごとによって装備できる/できないが存在します。装備できる職業を指定するリストも用意しましょう。

ArmorItemData.cs (新規)

防具アイテムクラスです。

いずれの防具も装備部位が1つ定められており、アクターの該当の部位に対してのみ装備することができます。

属性耐性値を設定していると、その防具を装備しているアクターは指定数値の耐性が増減します。これもInspectorから指定可能です。

ConsumableItemData.cs (新規)

消費アイテムは使用タイミングなどで種類分けできるようにします。

すぐに使用時処理を作るわけではないですが、HP回復アイテムとTP回復アイテムの2種類の使用時処理は簡単なのでここで作成しておきました。

各アイテムをScriptableObjectを活用して作成する

それでは武器・防具・消費アイテムのScriptableObjectを作成していきます。まずは動作確認用に2~3個ずつ程度あれば問題ありません。ただし防具に関しては各部位を最低2つずつは作っておくと良いでしょう。

サンプル素材の画像も添付していますが、同じように作成する必要はありません。

それではScriptableObjectsフォルダにItemsフォルダを作成し、その中にアイテムデータを作成してきましょう。

武器アイテムを作る

Icon Sprite(アイテムアイコン)は適当な正方形の画像を指定すればOKです。素材はTextures/ItemIcons以下にあります。沢山のアイコン画像素材が1つの画像ファイルにまとめています。その中の1つを選択して使用するのが簡単です。

Weapon Power(攻撃力)は適当に1~2ケタ程度の数値を入力すればOKです。バランス調整は後から行えば大丈夫です。

Weight(重量)は、ここに入力した値分だけ装備時に速度が低下します。あまり大きい値を入れると行動順が回ってこなくなりアクターがいつまで経っても行動できなくなるので気を付けましょう。

弓矢などの遠距離武器にはIs Rangedフラグをオンにします。

Weaponsフォルダを作成し、近接武器、魔法武器、遠距離武器を整理するためのフォルダを作成しておきました(整理の仕方は任意です)。

近接武器

ここでは近接武器を3種類作ります。Meleeフォルダで右クリックしてCreate > Dungeon > WeaponSOで作成します。入力データは以下の通り。

 

  

魔法武器

次は同じ要領で魔法武器を作ります。装備可能な職業を魔法使い系統にして近接武器との差別化を図ります。

 

遠距離武器

最後に遠距離武器を作ります。遠距離攻撃フラグをONにしておきます。

 

ここまででサンプルの武器データの作成は完了です。

防具アイテムを作る

Itemsフォルダの中にArmorsフォルダを作成し、その中にHead、Torso、Legs、LeftHandのフォルダを作成します。

Scriptable ObjectはArmorSOで作成します。

その他のアイテム作成時の設定は武器と同じような設定で問題ありません。

ただしArmor Typeパラメータ(装備部位)の指定は忘れないようにしましょう。
Head・Torso・Legs・Left Handの4種類から指定します。

Resists(属性耐性)パラメータから、選んだ属性の耐性値を増減させられます。1にすれば完全耐性(ダメージ0)になり、-1にすれば弱点(ダメージ2倍)になります。

Head(頭)

頭に付ける防具の作成をしていきます。装備部位をHeadにして必要項目を入力します。

 

Torso(胴体)

装備部位をTorsoにします。

 

  

最後の東洋の巫女装束では各種属性攻撃を半減させる効果を付与しています。

Legs(脚)

装備部位をLegにします。

 

Left Hand(左手)

装備部位をLeftHandにします。

 

ここまででサンプルの防具データの作成は完了です。

消費アイテムを作る

最後に武器や防具とは異なるタイプのアイテムを作成していきます。

先述した通り、

  • ダンジョン探索中に使用できるアイテム
  • 武器や防具のショップ解放用の素材
  • その他の所有アイテム

の3種類を作れるようにアイテムシステムを構築していきます。

まずはItemsフォルダの中にConsumablesというフォルダを作成し、その中に以下のように3つのフォルダを作成しましょう(名称などは任意です)。

このScriptable Objectの構造は以下のようになっています。

基礎データは武器や防具と同じですが、一部異なるパラメータを用意しています。

Consumable Item Typeパラメータではその消費アイテムの種類を指定します。

Combatなら戦闘中に使用可能、Dungeonならダンジョン探索中に使用可能なアイテムとなります。
Bothを指定すれば両方のタイミングで使用できます。

EffectTypeに先ほどConsumableItemDataクラスで定義した”HealHP“か”HealTP“を入力することでそれぞれHP回復効果・TP回復効果を持たせることが可能です。Effect Valueはその回復量になります。

ただしすぐに動作を実装しないため後回しでもOKです。
ちなみに説明文章に{0}を含めるとその部分が効果量に上書きされます。

Material、Otherに指定すると使用不可のアイテムになります。Buy Priceを設定すればお店では売ることが可能です。Materialは合成素材のアイテムを作る場合に指定します。

このようなアイテムシステムは3DダンジョンRPG制作に限らず、あらゆるジャンルのRPGを作るときに使えると思います。ぜひマスターしてみてください!

戦闘・ダンジョン両方で使えるアイテム

ForUseフォルダにScriptable Objectを作成します。

 

素材

素材はMaterialsフォルダに作成します。

 

  

その他(任意)

最後にサンプルとしてOthersフォルダに一つアイテムを作成しておきます。

ここまででアイテムデータの作成は完了です。

所持アイテム管理処理をC#スクリプトで実装

Dataクラス内にどのアイテムをいくつ所持しているかの情報を記録できるようにします。

アイテムデータと所持数を対応させるクラスを作成して管理します。(Dictionaryで実装しても同じことが実現可能です)

Data.cs

続きを読む

このコンテンツはパスワードで保護されています。 コンテンツを読みたい方はUnity入門の森ショップ(https://unityforest.shop/)で講座閲覧権を取得してね。

まとめ

戦闘への反映およびアイテム入手手段などの実装がまだですが、ひとまず基礎的なアイテム機能の実装が完了しました。

次章でも引き続きアイテム周りの実装を進めていき、ショップでGoldを消費してアイテムをこうy乳できるようにします。

次の記事:

Unity 3DダンジョンRPGの作り方15 ダメージ計算式・ショップ・素材合成システムの実装
この記事は3Dダンジョン探索型RPGの作り方講座の第15回目です。前回は、武器/防具/消費アイテムの3種類を実装し、部位別装備(右手/頭/胴/脚/左手)を実現しました。装備による能力値変動や職業別に装備できる武器の制限、属性耐性システムも構...

Unity 3DダンジョンRPGの作り方講座に戻る >>

 

【ゲームの作り方講座もプレゼント中!】

現場レベルのゲーム制作が、すべてここで学べます。

【永久会員チケット】

永久会員チケット|Unity入門の森

全講座を見放題で学ぶ

ソースコード・素材・プロジェクトすべて公開。
Unityの基礎から応用まで、一生使えるスキルを体系的に習得。

コメント

タイトルとURLをコピーしました