はじめに
現在、私はUnityにて2Dアクションゲームを作成しています。
・物理型と魔法型を切り替えて戦うこと
・同じキーでそれぞれ別のスキルを使えるようにしたい
ということで、今回スキル切り替えの仕組みを考えてみました。
概要
今回は特定のキーを押すたびにスキルのゲームオブジェクトをプレハブ化したを生成してどうにかしよう、と試してみました。
スキルごとに当たり判定用のコライダーとスクリプトを用意しているので、これが一番簡単そうかな…?と思い、この手段を選んでいます。
他にもやり方があれば教えていただきたいです。
スキルのプレハブを生成するスクリプト
配列と剰余の組み合わせで生成するプレハブを決め、Instantiateで生成を行います。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SkillChange : MonoBehaviour
{
public GameObject[] _skill = new GameObject[4]; //スキルプレハブをしまう配列
private int _currentPrefabIndex1 = 1;
private int _currentPrefabIndex2 = 0;
void Start()
{
Instantiate(_skill[0]); //初期のスキル
Instantiate(_skill[1]); //初期のスキル
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Q)){
_currentPrefabIndex1 = (_currentPrefabIndex1 + 2) % _skill.Length;
_currentPrefabIndex2 = (_currentPrefabIndex2 + 2) % _skill.Length;
Instantiate(_skill[_currentPrefabIndex1]);
Instantiate(_skill[_currentPrefabIndex2]);
}
}
}
スキルのオブジェクトにアタッチするスクリプト
このままだとプレハブが消えることなく残り続けてしまうので、消去はスキル側から行います。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Skill1 : MonoBehaviour
{
void Start()
{
}
void Update()
{
if(Input.GetKeyDown(KeyCode.Q)){
Destroy(this.gameObject);
} //これを書き足してください
}
}
(本当はここにコライダーやダメージ計算などなど色々な処理を書いていますが、変更するかもしれないのでとりあえず必要なところだけピックアップしてきました)
最後に
また他の機能が出来次第、記事に起こしていこうと思いますので、ぜひそちらもよろしくお願いします。
最後まで読んでいただきありがとうございました。