Unity3D遊戲開發之小地圖的實現

來源:互聯網
上載者:User

         今天我們來講一下在Unity3D中如何?小地圖。首先,我們來一起看看最終實現的效果:

     

         要實現小地圖效果,需要實現對於小地圖和角色的繪製,所以這裡需要用到OnGUI()方法,我們一起來看代碼:

using UnityEngine;using System.Collections;public class CameraScript : MonoBehaviour {//定義小地圖貼圖public Texture MapTexture;//定義角色標誌貼圖public Texture PlayerTexture;//定義第三人稱角色控制器private GameObject m3rdPersonControl;public GameObject BulletPos;public GameObject Bullet;//定義角色位置private float mPersonX;private float mPersonZ;//定義縮放比例private float mScale;void Start () {       //擷取角色控制器m3rdPersonControl=GameObject.Find("3rd Person Controller");//擷取角色位置mPersonX=m3rdPersonControl.transform.position.x;mPersonZ=m3rdPersonControl.transform.position.z;//根據小地圖和螢幕計算縮放比例mScale=(200F/Screen.width)<(200F/Screen.height)?(200F/Screen.width):(200F/Screen.height);}void Update () {                   //重新整理角色位置        mPersonX=m3rdPersonControl.transform.position.x;mPersonZ=m3rdPersonControl.transform.position.z;if(Input.GetMouseButtonDown(0)){   Vector3 Target=Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y, 1));   Vector3 Dir=Target-m3rdPersonControl.transform.position;   Instantiate(Bullet,BulletPos.transform.position,Quaternion.identity);}}void OnGUI(){        //在螢幕右上方繪製200x200的小地圖貼圖  GUI.DrawTexture(new Rect(Screen.width-200,0,200,200),MapTexture);  //以小地圖左下角為原點的右手系,角色標示寬度和高度為20  GUI.DrawTexture(new Rect(Screen.width-200+mPersonX*mScale+20,200-mPersonZ*mScale-20,20,20),PlayerTexture);}}
         在上述代碼中,我們設定小地圖的寬度和高度均為200,設定角色標示物的寬度和高度均為20,並規定地圖向上為正北方向。我們在初始化方法Start()方法中擷取一個角色控制器,以擷取角色的位置,並根據小地圖和螢幕計算出縮放比例。在OnGUI()方法中我們根據縮放比例來繪製小地圖和角色標示物。而在Update()方法中我們重新整理角色的位置。這就是今天的內容啦,希望大家喜歡啊!


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.