今天我们来讲一下在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()
- {
-
- GUI.DrawTexture(new Rect(Screen.width-200,0,200,200),MapTexture);
-
- GUI.DrawTexture(new Rect(Screen.width-200+mPersonX*mScale+20,200-mPersonZ*mScale-20,20,20),PlayerTexture);
- }
- }
在上述代码中,我们设定小地图的宽度和高度均为200。设定角色标示物的宽度和高度均为20,并规定地图向上为正北方向。
我们在初始化方法Start()方法中获取一个角色控制器,以获取角色的位置,并依据小地图和屏幕计算出缩放比例。在OnGUI()方法中我们依据缩放比例来绘制小地图和角色标示物。
而在Update()方法中我们刷新角色的位置。这就是今天的内容啦,希望大家喜欢啊!
本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5179497.html,如需转载请自行联系原作者