PoorMonk

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

 

posted on 2018-03-30 18:17  PoorMonk  阅读(110)  评论(0)    收藏  举报

导航