Game Controller 主要控制游戏的发展,比如增加分数,死亡,继续游戏等
1. 创建Game Controller Object,并 reset Transform
2. GameContoller 的inspector 窗口 Add Script 控制陨石产生
用 Instantiate 来初始化 Asteriod 的出现位置。spawnPositions 是陨石的出现范围, Quaternion.identity 表示没有旋转。
Instantiate (hazard, spawnPosition, spawnRotation);
3. 多个陨石效果,不能仅仅是单独的复制产生陨石的代码,代码重复是编程的忌讳。使用coroutine来控制陨石波的出现时间,否则出现的同步的陨石,一排排。
Coroutine,中断,直到YieldInstruction 结束。 StartCoroutine(SpawnWaves), 开始一个 coroutine
using UnityEngine;
using System.Collections;
public class GameController : MonoBehaviour
{
public GameObject hazard;
public Vector3 spawnValues;
void Start ()
{
StartCoroutine(SpawnWaves());
}
void SpawnWaves ()
{
Vector3 spawnPosition = new Vector3 (Random.Range (-spawnValues.x, spawnValues.x), spawnValues.y, spawnValues.z);
Quaternion spawnRotation = Quaternion.identity;
Instantiate (hazard, spawnPosition, spawnRotation);
}
}
可以看到,explotion 还是一直没有消失,此时需要在一定时间后清除。
using UnityEngine;
using System.Collections;
public class DestroyByTime : MonoBehaviour
{
public float lifetime;
void Start ()
{
Destroy (gameObject, lifetime);
}
}