Cz_mirror Game開発備忘録

週末にUnity でゲーム開発をしています。ゲーム開発を通じて得た情報の備忘録として活用するブログになります。

【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();
}
}
}