今天我們來講一下在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()方法中我們重新整理角色的位置。這就是今天的內容啦,希望大家喜歡啊!