Unity入门级别练手 小游戏
首先来两张非常简单粗糙的游戏画面:


游戏设计思路:
1 飞盘(自带三个飞针)以一定速度不停旋转
2 飞针在初始位置准备,在按下鼠标左键后向飞盘发射,接触到后随着飞盘一起旋转
3 发射飞针达到目标个数后进入下一关,与飞盘现有飞针碰撞则游戏结束
4 每通过一关飞盘转速和通关飞针数增加
飞盘旋转:
1 public float RotateSpeed = 90; 2 3 void Update () { 4 transform.Rotate(new Vector3(0, 0, -RotateSpeed * Time.deltaTime)); 5 }
飞针飞行:
1 void Update () { 2 if (!IsGotoCircle) //是否能飞向飞盘 3 { 4 if (!IsReachStartPoint) //是否已到达起始发射位置 5 { 6 transform.position = Vector3.MoveTowards(transform.position, StartPoint.position, FlySpeed * Time.deltaTime); //由视野下方飞行起始发射位置 7 if (Vector3.Distance(transform.position, StartPoint.position) < 0.05f) 8 { 9 IsReachStartPoint = true; 10 } 11 } 12 } 13 else 14 { 15 transform.position = Vector3.MoveTowards(transform.position, targetPosition, FlySpeed * Time.deltaTime); //由起始位置飞向飞盘 16 if (Vector3.Distance(transform.position, targetPosition) < 0.05f) 17 { 18 transform.position = targetPosition; 19 transform.SetParent(DiskPoint); //到达飞盘后将飞盘设为父物体,随飞盘一起旋转 20 GameManager.instance.ReachCircle(); 21 IsGotoCircle = false;
22
23 } 24 } 25 }
游戏结束后的动画效果:
1 IEnumerator GameOverAnimation(Color col) 2 { 3 while(true) 4 { 5 mainCamera.backgroundColor = Color.Lerp(mainCamera.backgroundColor, col, m_speed * Time.deltaTime); //颜色差值实现渐变效果 6 mainCamera.orthographicSize = Mathf.Lerp(mainCamera.orthographicSize, 4, m_speed * Time.deltaTime); //控制摄像机的size值实现放大的效果 7 if (Mathf.Abs(mainCamera.orthographicSize - 4) < 0.01f) 8 { 9 break; 10 } 11 yield return null; 12 } 13 if(col == Color.red) 14 yield return new WaitForSeconds(2); 15 else 16 yield return new WaitForSeconds(1); 17 SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex); 18 }
完整代码:https://github.com/PoorMonk/UnityPracticeProject/tree/master/StickPinProject
浙公网安备 33010602011771号