生活随笔
收集整理的這篇文章主要介紹了
Unity3D实现立体迷宫寻宝
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Unity3D實現立體迷宮尋寶 這個小游戲是一個白癡在一個昏暗的房間走動找到關鍵得分點,然后通關游戲。入門Unity3D做的第一款游戲,比較無聊,但實現了一般的游戲功能。如,人物控制,碰撞檢測,主控制器等。
游戲界面
控制代碼 GameManager.cs 主控制腳本:用于控制整個游戲的主邏輯,屏幕顯示一些提示字符以及游戲分數,并且根據游戲邏輯更新數值。同時,檢測按鍵是否需要退出。
using UnityEngine;
using System.Collections;[AddComponentMenu("Game/GameManager")]
public class GameManager : MonoBehaviour {public static GameManager Instance = null;// 游戲得分public int m_score = 0;// 游戲主角Player m_player;// UI文字GUIText txt_hiscore;GUIText txt_score;GUIText txt_win;// 初始化void Start () {Instance = this;// 獲得主角m_player = GameObject.FindGameObjectWithTag("Player").GetComponent<Player>();// 獲得設置的UI文字txt_score = this.transform.FindChild("txt_score").GetComponent<GUIText>();txt_win = this.transform.FindChild("txt_win").GetComponent<GUIText>();}// 游戲勝利public void setWin(){txt_win.gameObject.SetActive (true);m_player.enabled = false;}// 退出游戲void Update(){if (Input.GetKeyDown(KeyCode.Escape))Application.Quit();}// 更新分數public void SetScore(int score){m_score+= score;txt_score.text = "Score "+m_score;}
}
ItemHit.cs 碰撞檢測腳本:碰撞得分+1,如果是最后一個得分點,則標識游戲勝利。
using UnityEngine;
using System.Collections;public class ItemHit : MonoBehaviour {// Use this for initializationvoid Start () {}void OnTriggerEnter(Collider other) {//判斷palyer對象是否和得分點接觸if( other.tag == "Player" ){GameObject.Destroy( this.gameObject );GameManager.Instance.SetScore(1);//判斷全部得分點都已經過,結束游戲,打印winif( GameObject.FindObjectsOfType<ItemHit>().Length == 1 ){GameManager.Instance.setWin();}}}
}
player.cs 人物控制腳本:在這里可以控制對象的一些屬性,例如重力數值,移動速度,攝像機參數,初始生命值。 Start( )的時候需要綁定對象; Update( )的時候需要更新人物位置,并且讓小攝像機追蹤人物,小攝像機用于小地圖顯示人物當前位置。
using UnityEngine;
using System.Collections;[AddComponentMenu("Game/Player")]
public class Player : MonoBehaviour {// 組件public Transform m_transform;CharacterController m_ch;// 角色移動速度float m_movSpeed = 10.0f;// 重力float m_gravity = 2.0f;// 攝像機Transform m_camTransform;// 攝像機旋轉角度Vector3 m_camRot;// 攝像機高度float m_camHeight = 1.4f;// 生命值public int m_life = 5;void Start () {// 獲取組件m_transform = this.transform;m_ch = this.GetComponent<CharacterController>();// 獲取攝像機m_camTransform = Camera.main.transform;// 設置攝像機初始位置Vector3 pos = m_transform.position;pos.y += m_camHeight;m_camTransform.position = pos;m_camTransform.rotation = m_transform.rotation;m_camRot = m_camTransform.eulerAngles;Screen.lockCursor = true;}void Update () {Control();}void Control(){ //獲取鼠標移動距離float rh = Input.GetAxis("Mouse X");float rv = Input.GetAxis("Mouse Y");// 旋轉攝像機m_camRot.x -= rv;m_camRot.y += rh;m_camTransform.eulerAngles = m_camRot;// 使主角的面向方向與攝像機一致Vector3 camrot = m_camTransform.eulerAngles;camrot.x = 0; camrot.z = 0;m_transform.eulerAngles = camrot;float xm = 0, ym = 0, zm = 0;// 重力運動ym -= m_gravity*Time.deltaTime;// 上下左右運動if (Input.GetKey(KeyCode.W)){zm += m_movSpeed * Time.deltaTime;}else if (Input.GetKey(KeyCode.S)){zm -= m_movSpeed * Time.deltaTime;}if (Input.GetKey(KeyCode.A)){xm -= m_movSpeed * Time.deltaTime;}else if (Input.GetKey(KeyCode.D)){xm += m_movSpeed * Time.deltaTime;}//移動m_ch.Move( m_transform.TransformDirection(new Vector3(xm, ym, zm)) );// 使攝像機的位置與主角一致Vector3 pos = m_transform.position;pos.y += m_camHeight;m_camTransform.position = pos; }
}
完整工程 傳送門:這里
轉載于:https://www.cnblogs.com/wsine/p/4653004.html
總結
以上是生活随笔 為你收集整理的Unity3D实现立体迷宫寻宝 的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔 網站內容還不錯,歡迎將生活随笔 推薦給好友。