ユニティちゃんのRPGを作ってみよう21ー戦闘で使うスキルデータを作成するー

今回は戦闘シーンで使用するキャラクターのスキルデータを作成していきます。

前回は戦闘シーンでキャラクター名、HP、MPを表示しました。

ユニティちゃんのRPGで戦闘シーンにキャラクター名、HP、MPを表示する機能を作成します。

ユニティちゃんのRPGを作ってみようの他の記事は

から見ることが出来ます。

戦闘シーンで選択する項目は『直接攻撃』『防御』『魔法』『アイテム』等がありますが、これらをスキルデータとしてあらかじめ作成しておき、戦闘に参加するキャラクターが保持出来るようにします。

スキルデータはScriptableObjectを使って作成していきます。

スポンサーリンク

Skillスクリプトの作成

全てのスキルの元となるスクリプトSkillスクリプトをAssets/RPG/Scripts/Skillフォルダに作成します。

Skillスクリプトはアセットファイルを作成出来るようにCreateAssetMenuアトリビュートを取り付けています。

列挙型のTypeでスキルのタイプを宣言しています。

skillTypeはこのスキルのタイプを設定します。

kanjiNameはスキルの漢字名、hiraganaNameはスキルの平仮名、informationはスキルの情報です。

skillUserEffectはこのスキルを使用した人の方に表示するエフェクト、skillReceivingSideEffectはスキルを受けた側に表示するエフェクトを設定します。

メソッド群はそれぞれのフィールドを返すだけです。

Magicスクリプトの作成

ほとんどのスキルはSkillスクリプトからアセットファイルを作成しますが、魔法系のスキルは魔法の攻撃力や使用するMP、魔法の属性等の追加情報が必要なのでSkillスクリプトを継承してMagicスクリプトを作成します。

作成する場所はAssets/RPG/Scripts/Skillフォルダです。

Skillスクリプトを継承してMagicスクリプトを作成し、CreateAssetMenuアトリビュートを取り付けてアセットファイルを作成出来るようにしています。

列挙型のMagicAttributeで魔法の属性を宣言しています。

スクリプトの中身はフィールド宣言とそれを返すメソッドが定義されているだけです。

スキルデータを作成する

スキルデータの元となるスクリプトが出来たので後は実際にスキルデータを作成するだけです。

通常スキルデータの作成

Assets/RPG/Data/Skill/Normalフォルダに通常のスキルデータを作成していきます。

右クリックからCreate→CreateSkillを選択し、名前をDirectAttackとします。

ユニティちゃんRPGでスキルのアセットファイルを作成する

同じようにGetAwayとGuardとItemを作成します。

それぞれのインスペクタでは以下のように設定します。

ユニティちゃんRPGの通常のスキルデータ

DirectAttackのSkillReceivingSideEffectに設定したエフェクトはアセットストアで『Cartoon FX Free』で検索して出てくるアセットの中のパーティクルを指定しています。

Assets/Effect/JMO Assets/Cartoon FX/CFX Prefabs/Hits/CFX_Hit_C_Whiteを設定しました。

これ以降エフェクトにはいくつかパーティクルゲームオブジェクトを設定しますが、各自自由に設定してみてください。

魔法スキルデータの作成

次に個々の魔法スキルデータを作成していきます。

Assets/RPG/Data/Skill/Magicフォルダで右クリックからCreate→CreateMagicを選択し、魔法の名前を設定します。

今回はFire、Healing、IncreaseAttackPower、IncreadDefencePower、NumbnessMagic、PoisonnousMagic、Thunderを作成しました。

FireとHealingは

ユニティちゃんRPGのFireとHealingデータ

IncreaseAttackPowerとIncreaseDefencePowerは

ユニティちゃんRPGのIncreaseAttackPowerとIncreaseDefencePowerデータ

NumbnessRecoveryとPoisonnousRecoveryは

ユニティちゃんRPGのNumbnessRecoveryMagicとPoisonnousRecoveryMagicデータ

Thunderは

ユニティちゃんRPGのThunderデータ

のように設定しました。

NumbnessRecoveryとPoisonnousRecoveryはmagicPowerが必要ないのに持ってしまっていますのでSkillを継承した別のスクリプトを作成しそこからアセットファイルを作成した方がいいかもしれません。

今回はそのまま使う事にしました。

CharacterStatusスクリプトの修正

スキルデータを作成したのでキャラクター毎に持っているスキルを設定する必要があります。

味方でも敵でもスキルは持っているのでCharacterStatusスクリプトにスキルを保持出来るようにします。

skillListは先ほど作成したスキルデータを設定します。

フィールド値を返すメソッドも用意します。

これでキャラクター毎にスキルを設定出来るようになったの個々のキャラクターのステータスにスキルデータを設定します。

ユニティちゃんのステータスはAssets/RPG/Data/Status/Ally/UnityChanなので選択しインスペクタでスキルを設定します。

ユニティちゃんRPGのユニティちゃんのステータスにスキルを設定する

その他Assets/RPG/Data/Status/Ally/YujiStatusにもスキルを設定します。

ゆにてぃちゃんRPGの大鳥ゆうじのステータスにスキルを設定する

後はAssets/RPG/Data/Status/Enemyフォルダの敵のステータスにも設定します。

Elfは

ユニティちゃんRPGのElfのステータスにスキルを設定する

Goblinは

ユニティちゃんRPGのゴブリンのステータスにスキルを設定する

GoblinWarriorは

ユニティちゃんRPGのゴブリン戦士のステータスにスキルを設定する

のように設定しました。

これで個々のキャラクターが持つスキルを設定することが出来ました。

終わりに

今回は戦闘で使用するスキルデータの作成をしましたが、戦闘シーンでは魔法の属性を使っていなかったり、痺れや毒からの回復等の処理も作成しません。

色々なデータをとりあえず作ってみたというだけで、実際に処理を作る場合はそれ用の処理を入れてみてください。

ユニティちゃんライセンス

この作品はユニティちゃんライセンス条項の元に提供されています

スポンサーリンク

記事をシェアして頂ける方はこちら

フォローして頂くとやる気が出ます