unity 手机重力迷宫(二)
生活随笔
收集整理的這篇文章主要介紹了
unity 手机重力迷宫(二)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
二、創建代碼
1、創建play代碼
play代碼用于游戲的底層邏輯和判斷游戲是否滿足勝利和失敗條件,并
using System.Collections; using System.Collections.Generic; using UnityEngine;public class paly : MonoBehaviour {public float speed = 10;public static bool isExit = false;public static bool isover = false;void Update(){電腦測試期間使用(手機測試期間拋棄)由于測試應用隨時打包費時費力所以暫且使用unity進行測試,大致無誤后再進行打包測試float x = Input.GetAxis("Horizontal");//使用unity內置環境float y = Input.GetAxis("Vertical");transform.Translate(new Vector3(x,0,y)*Time.deltaTime*speed);//用來控制小球移動}private void OnCollisionExit(Collision collision)//兩物體離開時觸發{if (collision.collider.tag == "poin")//獲取tag屬性,通過標簽來判斷物體是否離開{isExit = true;//用于GameManager內代碼進行判斷}}private void OnCollisionEnter(Collision collision)//兩物體接觸時觸發{if (collision.collider.tag=="overPoint")//獲取tag屬性,通過標簽來判斷物體是否接觸{isover = true;//用于GameManager內代碼進行判斷}} }2、創建gravity代碼
gravity代碼用于獲取手機的重力感應,并顯示游戲勝利和游戲失敗的UI界面
public class gravity : MonoBehaviour {public static bool isExit = false;public static bool isover = false;public float speed = 12f;void FixedUpdate(){Vector3 dir = Vector3.zero;//讓dir在世界位置歸0dir.x = Input.acceleration.x;//給dir賦值dir.z = Input.acceleration.y;//同上if (dir.sqrMagnitude > 1)//向量規范化{dir.Normalize(); //把一個向量歸一化向量,歸一化就是 把原來某個向量變成 x,y,z平方之和的平方根為1,也就是新向量長度為1}dir *= Time.deltaTime;//讓dir每幀運行的距離this.transform.GetComponent<Rigidbody>().AddForce(dir * speed, ForceMode.Impulse);//物體旋轉}private void OnCollisionExit(Collision collision)//同play代碼{if (collision.collider.tag == "startPoint"){isExit = true;}}private void OnCollisionEnter(Collision collision){if (collision.collider.tag == "overPoint"){isover = true;}} }3、創建GameManager代碼
GameManager代碼用于整個程序的計時功能和按鈕功能的實現也是整個游戲最重要的部分
public class GameManager : MonoBehaviour {public Button quit;//退出按鈕public Button restart;//重新開始按鈕public Text wintext;//勝利時出現的文本public Text losetext;//失敗時出現的文本public bool a = true;//計時器的開關public object startobject;//控制重新開始按鈕public object overobject;//控制退出按鈕private float CountDownTime = 59f;//計時器的時長private float GameTime;//計時器輸出時的變量private float timer = 0;//用于判斷計時器可否運行public Text GameCountTimeText;public static float timeScale { get; set; }//世界的流逝的尺度,利用這個可以達到慢動作的效果void Start(){GameTime = CountDownTime;//時間的數字賦值給變量,用被賦值變量來進行判斷}// Update is called once per framevoid Update(){int M = (int)(GameTime / 60);float S = GameTime % 60;if (paly.isExit == true)//做下開始游戲的判斷{timer += Time.deltaTime;//timer加上世界時間if (timer >= 1f)//計時器運行條件{timer = 0;//為timer重新賦值GameTime--;GameCountTimeText.text = M + ":" + string.Format("{0:00}", S);if (S <= 0)//結束游戲失敗條件{Time.timeScale = 0;//世界時間變為0以此來停止游戲(暫停游戲同樣代碼也可以)losetext.gameObject.SetActive(true);//游戲失敗結束顯示文本框內容}}}if (paly.isover == true)//用兩個布爾值來判斷代碼是否成立{Time.timeScale = 0;//結束游戲勝利wintext.gameObject.SetActive(true);//游戲勝利則顯示控件文字}}public void objquit() {Application.Quit();//退出整個程序}public void Chonxin() {SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);//游戲場景重啟,重新加載場景losetext.gameObject.SetActive(false);//讓游戲失敗的控件隱藏wintext.gameObject.SetActive(false);//讓游戲勝利的控件隱藏paly.isover = false;//讓paly的值恢復初始值Time.timeScale = 1;//世界時間繼續執行} }若按照我發布的步驟進行操作則可以實現本游戲
代碼寫的可能不是很好,如果大神有更好的代碼歡迎提出
總結
以上是生活随笔為你收集整理的unity 手机重力迷宫(二)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Windows Server 2019
- 下一篇: 学编程C#之制作一个2D游戏(愤怒的小鸟