概要
敵をスポーンする機能を実装します。
今回の記事ではオブジェクトを動的生成するところから実装します。
以下gifアニメの様な動きを実装します。
1秒毎にオブジェクト(敵に該当する)を生成します。
開発環境
IDE:Rider
Unity:2020.3.42(LTS)
OS:Windows10
実装のポイント
一定間隔でメソッドを実行するためにはUpdateメソッドとTime.deltaを使っています。
Update毎にspawnTimerの値(最大値1)が減少していきます。
0以下になった時にオブジェクトを動的生成するメソッドが実行されます。
0になった時spawnTimerに1が代入され、再度同じ処理が実行されます。
コード
Spawner.cs
using UnityEngine;
public class Spawner : MonoBehaviour
{
[SerializeField] private GameObject testGO;
[SerializeField] private int enemyCount = 10;
// Btw = Between
[SerializeField] private float delayBtwSpawns;
private int _enemiesSpawned;
private float _spawnTimer;
private void Update()
{
_spawnTimer -= Time.deltaTime;
if (_spawnTimer < 0)
{
_spawnTimer = delayBtwSpawns;
if (_enemiesSpawned < enemyCount)
{
SpawnEnemy();
_enemiesSpawned++;
}
}
}
private void SpawnEnemy()
{
Instantiate(testGO, transform.position, Quaternion.identity);
}
}
参考
Time.deltaTime
Section3 8
github commit 分