エフェクトプレハブを作る
このままだとあまりにバトルが寂しいのでエフェクトを作成します。
まず2DオブジェクトのSpriteを作成し、名前をEffectPrefabとします。
EffectControllerスクリプトを作成し、EffectPrefabオブジェクトにアタッチします。
効果音も再生するのでAudioSourceコンポーネントもアタッチしておきます。
EffectPrefabの座標はEnemySpriteと同じにしておき、SpriteRendererコンポーネントのOrder in Layerを1にします(敵キャラより手前に表示するため)。
いったんプレハブにして、Hierarchyウィンドウに残っているEffectPrefabの名前をEffectAttackに変更します。
Spriteに攻撃したときの画像を入れておきます。
AudioSourceのAudioClipに攻撃したきの効果音を入れておきます。
これでもう一度プレハブ(Variant Prefab)にして、Hierarchyウィンドウから削除します。
このエフェクトプレハブをインスタンスかすると画像が表示されて効果音も再生されます。
設定した時間で消えるようにする
エフェクトプレハブにアタッチしたEffectControllerスクリプトで、設定した時間で実体化したオブジェクトが削除されるようにします。
デフォルトで1秒で消えるようにしておきます。
EffectController.cs
public class EffectController : MonoBehaviour { public float DeleteTime = 1f; // Start is called before the first frame update void Start() { } // Update is called once per frame void Update() { DeleteTime = DeleteTime - Time.deltaTime; if (DeleteTime <= 0f) { Destroy(gameObject); } } }
さきほど作ったEffectAttackプレハブのインスペクターで削除する時間を1に設定しておきます(デフォルトで1になっているはず)。
エフェクトプレハブをスキルデータに追加する
マスターデータとして作成した攻撃のスキルデータに、EffectAttackプレハブをアウトレット接続します。
あとはSkillDirectorのSetSkillメソッドでスキル発動時にアウトレット接続したエフェクトプレハブを実体化する処理を追加します。
SkillDirector.cs
public void SetSkill(SkillParams skillParams, UnitStatus userStatus, UnitStatus targetStatus, Action action) { if (skillParams.EffectPrefab != null) { Instantiate(skillParams.EffectPrefab); } ...
同じようにEffectPrefabを作って他のスキルのエフェクトも作成し、それぞれのスキルデータにアウトレット接続しておきます。
なお防御、回復、敵キャラの攻撃はスプライトに画像を設定せず、効果音だけを設定します。
こんな感じになりました。