日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Unity3D实现立体迷宫寻宝

發布時間:2024/1/1 编程问答 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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实现立体迷宫寻宝的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。