塔防游戏敌人波数控制
在塔防游中,会需要我们实现敌人的一波一波产生,实现的方法可以是通过Time来实现但是比较繁琐,今天给大家介绍通过协程实现控制敌人产生的波数。我们来看一下代码:
//产生多少波怪
public int count;
//每波怪产生后间隔的时间
public float span;
//产生敌人的速率
public float rate;
//敌人的预制体
public GameObject enemeyPrefabs;
//每波产生怪的数量
public int number;
// Use this for initialization
void Start () {
StartCoroutine(GetWaveEnemy(count,span));
}
// Update is called once per frame
void Update () {
}
//控制波数
IEnumerator GetWaveEnemy(int wave,float span)
{
while (wave>0)
{
yield return StartCoroutine(CreateEnemies(rate));
wave--;
Debug.Log("第"+wave+"波产生结束");
yield return new WaitForSeconds(span);
}
}
//控制一波产生的数量
IEnumerator CreateEnemies(float rate)
{
int count = 0;
while (true)
{
if (count<number)
{
yield return new WaitForSeconds(rate);
Instantiate(enemeyPrefabs,new Vector3(20,-7,-31),Quaternion.identity);
count++;
}
else
{
break;
}
}
}
写好脚本将他绑定在一个空物体上,实现效果如下(该图是我塔防游戏的一个效果,GIF传不上...)