【RAYSER開発】敵機の弾の発射処理
敵機の弾の発射処理は定期的に実行する処理で行うようにするため、コルーチンを使って実装してみました。
IAttackableはAttackメソッドのみ定義されたインターフェースになります。
Startでコルーチンを走らせて、その処理内でAttackを実行しています。Attackの間隔はshotIntervalの値を元にWaitForSecondsで制御しています。
public class EnemyShot : MonoBehaviour, IAttackable
{
[SerializeField] private GameObject shot;
[SerializeField] private float shotInterval = 1.5f;
void Start()
{
StartCoroutine("AttackInterval");
}
/*
* 攻撃処理
*/
public void Attack()
{
GameObject _shot = Instantiate(shot, transform.position, transform.rotation);
}
/*
* 攻撃インターバル
*/
public IEnumerator AttackInterval()
{
while (true)
{
yield return new WaitForSeconds(shotInterval);
Attack();
}
}
}