Unity4.3游戏开发项目实战(龚老师编著)第二章太空射击
1、摄像头:透视投影Perspective和正交投影Orthographic的区别。这是个2D游戏,所以选择后者。
2、碰撞检测:游戏里飞机发射子弹击碎岩石,岩石撞碎飞机都需要用到碰撞检测。
碰撞检测过程中需要为撞击与被撞击物体加上碰撞体。子弹使用胶囊碰撞体(CapsuleCollider),飞机和岩石使用立方体碰撞体(Box Collider),并且勾选Is Trigger选项。
撞击者(攻击方)需要添加刚体(Rigidbody)。
撞击响应函数这里使用的是void OnTriggerEnter(Collider other),其中用other.tag == "Player"(飞机的tag是Player)来判断是否碰撞到了飞机,而projectile则是子弹。 http://blog.youkuaiyun.com/Monzart7an/article/details/22739421这篇文章详细分析了碰撞检测。
3、动画:岩石被击碎和飞机爆炸都会有爆炸动画。岩石爆炸总共有7帧图像,打包成一幅308*49的图片。所以可以设置Tiling属性的X=0.143表示只显示原图X轴的七分之一,而改变Offset中的X则可显示不同帧画面。这里直接贴代码:
using UnityEngine;
using System.Collections;
public class ExplosionController : MonoBehaviour {
public int index = 0;
public int frameNumber = 7;
float frameRate = 0;
float myTime = 0;
int myIndex = 0;
// Use this for initialization
void Start () {
frameRate = 1.0f / frameNumber;
}
// Update is called once per frame
void Update () {
myTime += Time.deltaTime;
myIndex = (int)(myTime * frameNumber);
index = myIndex % frameNumber;
renderer.material.mainTextureScale = new Vector2 (frameRate, 1);
renderer.material.mainTextureOffset = new Vector2 (index * frameRate, 0);
if (index == frameNumber - 1) {
Destroy (gameObject);
}
}
}
4、记录最高分数:其实就是保存和读取一个变量到本地。这里使用的是PlayerPrefs.SetInt("highScore")和PlayerPresf.GetInt("highScore")的方法,u3D会将变量名和值保存为键值对的形式。
5、切换场景:首先定义不同的场景(New Scene),调用Application.LoadLevel("场景名”)。