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




今天我們來講一下在Unity3D中怎樣實現小地圖。首先,我們來一起看看終於實現的效果:

     

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

[csharp]  view plain copy print ? 在CODE上查看代碼片 派生到我的代碼片
  1. using UnityEngine;  
  2. using System.Collections;  
  3.   
  4. public class CameraScript : MonoBehaviour {  
  5.       
  6.       
  7.     //定義小地圖貼圖  
  8.     public Texture MapTexture;  
  9.     //定義角色標志貼圖  
  10.     public Texture PlayerTexture;  
  11.     //定義第三人稱角色控制器  
  12.     private GameObject m3rdPersonControl;  
  13.       
  14.     public GameObject BulletPos;  
  15.     public GameObject Bullet;  
  16.     //定義角色位置  
  17.     private float mPersonX;  
  18.     private float mPersonZ;  
  19.       
  20.     //定義縮放比例  
  21.     private float mScale;  
  22.       
  23.     void Start ()   
  24.     {  
  25.            //獲取角色控制器  
  26.         m3rdPersonControl=GameObject.Find("3rd Person Controller");  
  27.         //獲取角色位置  
  28.         mPersonX=m3rdPersonControl.transform.position.x;  
  29.         mPersonZ=m3rdPersonControl.transform.position.z;  
  30.         //依據小地圖和屏幕計算縮放比例  
  31.         mScale=(200F/Screen.width)<(200F/Screen.height)?(200F/Screen.width):(200F/Screen.height);  
  32.     }  
  33.       
  34.     void Update ()   
  35.     {     
  36.                 //刷新角色位置  
  37.             mPersonX=m3rdPersonControl.transform.position.x;  
  38.         mPersonZ=m3rdPersonControl.transform.position.z;  
  39.         if(Input.GetMouseButtonDown(0))  
  40.         {  
  41.            Vector3 Target=Camera.main.ScreenToWorldPoint(new Vector3(Input.mousePosition.x,Input.mousePosition.y, 1));  
  42.            Vector3 Dir=Target-m3rdPersonControl.transform.position;  
  43.            Instantiate(Bullet,BulletPos.transform.position,Quaternion.identity);  
  44.         }  
  45.     }  
  46.       
  47.     void OnGUI()  
  48.     {  
  49.         //在屏幕右上角繪制200x200的小地圖貼圖  
  50.       GUI.DrawTexture(new Rect(Screen.width-200,0,200,200),MapTexture);  
  51.       //以小地圖左下角為原點的右手系,角色標示寬度和高度為20  
  52.       GUI.DrawTexture(new Rect(Screen.width-200+mPersonX*mScale+20,200-mPersonZ*mScale-20,20,20),PlayerTexture);  
  53.     }  
  54. }  

         在上述代碼中,我們設定小地圖的寬度和高度均為200。設定角色標示物的寬度和高度均為20,並規定地圖向上為正北方向。

我們在初始化方法Start()方法中獲取一個角色控制器,以獲取角色的位置,並依據小地圖和屏幕計算出縮放比例。在OnGUI()方法中我們依據縮放比例來繪制小地圖和角色標示物。

而在Update()方法中我們刷新角色的位置。這就是今天的內容啦,希望大家喜歡啊!


轉載,本文出處:原文出處


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM