当我们用Unity开发游戏的时候,怎么能动态的实现怪物的生成与删除。
get到了一种用for循环的方法来实现
首先定义一下生成需要的值
public GameObject _enemyship;//接收需要加载的物体
public int enemyCount;//定义生成的个数
public float WaitTime; //定义一个时间,让怪物在游戏开始一段时间后才开始加载
public float NextTime;//生成下一波怪物的时间间隔
void Start()
{
StartCoroutine(spawnWaves());//定义一个协同函数来限制怪物产生的时间
}
IEnumerator spawnWaves()
{
yield return new WaitForSeconds(WaitTime); //在游戏开始后会在waittime时间后才开始执行
while(true)
{
for(int i=0;i<enemyCount)
{
Vector3 shipPosition = new Vector3(Random.Range(-1000, 1000), Random.Range(-1000,1000), Random.Range(-1000, 1000));//设置生成物体的随机坐标
Quaternion shipRotation = Quaternion.Euler(Random.Range(-180,180), Random.Range(-180, 180), Random.Range(-180, 180));//设置生成物体的随机角度
Instantiate(_enemyShip, shipPosition, shipRotation);//生成物体
yield return new WaitForSeconds(spawnTime);//限制生成时间间隔
}
}
}
这样我们便完成了怪物的动态创建,但是这样的创建时无止境的。所以我们可以在物体的身上创建一个脚本,达到某种条件使他消失
比如用时间来定义
public float lifetime;//定义一个消失的时间
void Start()
{
Destroy(gameObject,lifetime);//达到时间自动消除。
}