您的位置:首页 > 移动开发 > Unity3D

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()方法中我们刷新角色的位置。这就是今天的内容啦,希望大家喜欢啊!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: