敌人管理器:管理敌人的随机出生点创建
在场景中建立几个空物体,作为敌人的出生点
public class EnemyManager : MonoBehaviour
{
public PlayerHealth playerHealth; // 玩家生命脚本
public GameObject enemy; // 敌人物体预制,拖入或者动态加载
public float spawnTime = 3f; // 敌人出生间隔时间
public Transform[] spawnPoints; //出生点们,动态根据Tag或层获取,或者直接拖入 void Start ()
{
// 每隔出生间隔时间重复调用 出生函数
InvokeRepeating ("Spawn", spawnTime, spawnTime);//方法名 几秒后调用 每隔几秒再调用
} void Spawn ()
{
// 玩家已死,不创建了
if(playerHealth.currentHealth <= 0f)
{
return;
}
// 随机出生点索引;c#的Random.Range是前闭后开的,就是最小值可以取到而最大值取不到
int spawnPointIndex = Random.Range (0, spawnPoints.Length); // 创建敌人(我们做项目一般最好记录存活敌人数量,超过一定数量就不创建了,如果地图大,运动范围广逃跑能力强,电脑会爆炸的)
Instantiate (enemy, spawnPoints[spawnPointIndex].position, spawnPoints[spawnPointIndex].rotation);
}
}
本案例中有3种怪物:我们实现把敌人做成了预制,可以重复使用