赞
踩
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("场景名”)。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。