Unity3D游戏开发之小地图的实现
2015-12-23 14:50
519 查看
http://blog.csdn.net/qinyuanpei/article/details/22747677
今天我们来讲一下在Unity3D中如何实现小地图。首先,我们来一起看看最终实现的效果:
要实现小地图效果,需要实现对于小地图和角色的绘制,所以这里需要用到OnGUI()方法,我们一起来看代码:
[csharp] view
plaincopy
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()方法中我们刷新角色的位置。这就是今天的内容啦,希望大家喜欢啊!
今天我们来讲一下在Unity3D中如何实现小地图。首先,我们来一起看看最终实现的效果:
要实现小地图效果,需要实现对于小地图和角色的绘制,所以这里需要用到OnGUI()方法,我们一起来看代码:
[csharp] view
plaincopy
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()方法中我们刷新角色的位置。这就是今天的内容啦,希望大家喜欢啊!
相关文章推荐
- [Unity3D]Unity3D游戏开发之角色控制漫谈
- (转)unity中基于alpha通道的shadow volume实现
- Unity3D NGUI自适应屏幕分辨率
- Unity3D 控制物体移动、旋转、缩放
- unity3D让物体惯性的旋转
- Unity3D研究院之主角面朝方向一定区域内对象角度计算
- Unity3D与旋转相关的函数(C#)
- Unity3D研究院之主角面朝方向一定区域内对象角度计算
- unity3d easytouch计算摇杆旋转角度以及摇杆八方向控制角色
- 在Unity3D中加载外部图片的两种方法
- Unity3D游戏内存瘦身 UI优化是关键
- Unity3D 中 用quaternion 来对一个坐标点进行旋转的初步体会
- Unity3D之触摸输入单击与双击研究
- unity3d简单血条的制作方法
- unity 2D摄像机移动导致FPS骤降的大坑
- unity 5.3.1播放视频文件
- unity3d API汇总
- [Unity实战]攻击范围的绘制
- Community detection
- Unity3d 4.6版本时assetbundle.createFromFile的问题