源代码和视频链接放在学习笔记十中
按照16课视频的内容做了一遍,没发现Unity4.x和Unity5.x在这个游戏中的太多不同
1.Rigidbody和Audio不能直接调用了,都要改成GetComponent的格式
2.GUIText在Unity5.x中不能添加了,要先添加一个空物体,然后在Component-》Rendering-》GUI Text添加,不过感觉不如Canvas
3.然后就是我觉得这个代码不如Survival shooter,不知为何我觉得有点乱,定义一个数字的boundary,又定义一个碰撞体的Boundary来控制范围,粒度掌握的尺度我也不是很喜欢,除了必要的分类和封装之外,一个函数超过一眼望去的尺寸在拆分就好,我觉得
脚本DestroybyBoundary脚本中 ,只有一句Trigger collider退出时,销毁对方gameObject本体,由于绑定在cube这个场地边界上,所有在boudary之内的物体完全超出边界时都会被销毁,就是任何退出场景的物体都会被销毁
void OnTriggerExit(Collider other) {
Destroy (other.gameObject);
}
脚本DestroyByContact中
public GameObject explosion; //岩石消失粒子效果
public GameObject playerExplosion; //player飞船撞毁粒子效果
private GameController gameController;
public int scoreValue;
void Start(){
GameObject gameControllerObject = GameObject.FindWithTag("GameController");
if (gameControllerObject != null) {
gameController = gameControllerObject.GetComponent<GameController> (); //取得GameController物体上的GameController脚本实体
}
}
void OnTriggerEnter(Collider other) {
if (other.tag == "Boundary") {
return;
} //由于出生在Boundary碰撞体范围内也算Enter,所以把物体进入场景那次排除
Instantiate(explosion,transform.position,transform.rotation); //其他情况碰撞就销毁和调用对应粒子效果,这里我觉得粒子效果的产生和销毁关联在一起清晰
if (other.tag == "Player") {
Instantiate (playerExplosion, other.transform.position, other.transform.rotation);
gameController.GameOver (); //撞到Player,调用player撞毁效果和GameOver的内容
}
gameController.AddScore (scoreValue); //其他一个情况就是加分,不管player挂没挂
Destroy (other.gameObject);
Destroy (gameObject); //碰撞与被撞物体都要被销毁
}
这是简单的内容,回头我在看下Done_Main.unity的内容,没有敌方飞行器感觉不好