第一个小游戏的开发过程,小球跑酷

记录一下今天,自己的第一个小游戏完成了,心情很舒爽。非常非常简单的小游戏,下面梳理一下过程。

首先创建跑道,使用cube,拉长等等。然后创建小球sphere,小球即为玩家(player,积累单词)。再添加障碍物,在分别为其上色。

紧接着给小球添加脚本,让其能够受玩家控制

 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 using UnityEngine.SceneManagement;
 5 
 6 public class Player : MonoBehaviour
 7 {
 8     //初始速度
 9     public float speed = 10;
10     //初始转弯速度
11     public float turnSpeed = 4;
12 
13     // Start is called before the first frame update
14     void Start()
15     {
16 
17     }
18 
19     // Update is called once per frame
20     void Update()
21     {
22         //按R键重玩,场景重置
23         if (Input.GetKeyDown(KeyCode.R)){
24             SceneManager.LoadScene(0);
25             Time.timeScale = 1;
26             //结束当前方法,防止一直掉下去
27             return;
28         }
29 
30         //获取坐标
31         float x = Input.GetAxis("Horizontal");
32         //给物体一个变化,即x轴会有一个转弯速度,y轴不变,z轴也有一个速度
33         transform.Translate(x * turnSpeed * Time.deltaTime, 0, speed * Time.deltaTime);
34 
35         //判断位置,如果在范围之外,则让它有其他的运转动作
36         if (transform.position.x < -4 || transform.position.x > 4)
37             transform.Translate(0, -10 * Time.deltaTime, 0);
38 
39         //如果y轴小于-20,则停止
40         if (transform.position.y < -20)
41             Time.timeScale = 0;
42 
43 
44     }
45 }

给小球添加刚体组件rigidbody,使其与障碍物barrier发生碰撞,也要给障碍物添加触发器trigger,创建barrier脚本

 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 
 5 public class Barrier : MonoBehaviour
 6 {
 7     // Start is called before the first frame update
 8     void Start()
 9     {
10         
11     }
12 
13     private void OnTriggerEnter(Collider other)
14     {
15         //debug测试是否发生碰撞
16         Debug.Log(other.name + "碰到了我");
17         //如果和自己碰撞的物体名称是player就停止
18         if(other.name == "Player")
19             Time.timeScale = 0;
20 
21     }
22 }

此时功能已经基本完成,在创建游戏通关完成UI,游戏开始时隐藏UI,触发是显示UI,创建一个物体将该脚本挂在上面,此物体放在小球跑道上。此物体也是触发器。

 1 using System.Collections;
 2 using System.Collections.Generic;
 3 using UnityEngine;
 4 
 5 public class Finish : MonoBehaviour
 6 {
 7     // Start is called before the first frame update
 8     void Start()
 9     {
10         GameObject canvas = GameObject.Find("Canvas");
11         canvas.transform.Find("Panel").gameObject.SetActive(false);
12     }
13 
14     private void OnTriggerEnter(Collider other)
15     {
16         GameObject canvas = GameObject.Find("Canvas");
17         canvas.transform.Find("Panel").gameObject.SetActive(true);
18     }
19 
20 }

 

posted @ 2019-06-27 17:37  捞的不谈  阅读(350)  评论(0编辑  收藏  举报