今天我們來講一下在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()方法中我們刷新角色的位置。這就是今天的內容啦,希望大家喜歡啊!
轉載,本文出處:原文出處