Unity3D 太空射击游戏学习笔记

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.csdn.net/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("场景名”)。

你可能感兴趣的:(Unity3D)