Unity3D 太空射擊遊戲學習筆記
阿新 • • 發佈:2019-01-31
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("場景名”)。