Unity3D培训
美国上市Unity3D培训机构

400-111-8989

VR培训

Unity3d培训机构之小地图制作

  • 发布:Unity3D培训
  • 来源:Unity3D教程
  • 时间:2016-12-13 11:51

在《Unity3d游戏开发》一书中介绍了一种简单的制作小地图的方法。原理就是先制作好小地图背景与主角的贴图,

然后通过小地图的宽高与真实地图的宽高计算其缩放比例,再根据缩放比例计算主角的位置。Unity3d培训机构今天整理以下内容

用C#编写的代码如下:

using UnityEngine;

using System.Collections;

public class xiaoditu : MonoBehaviour {

GameObject plane;

GameObject cube;

float mapWidth;

float mapHeight;

float widthCheck;

float heightCheck;

float mapcube_x = 0;

float mapcube_y = 0;

bool keyUp;

bool keyDown;

bool keyLeft;

bool keyRight;

public Texture map;

public Texture map_cube;

void Start () {

plane = GameObject.Find ("Plane");

cube = GameObject.Find ("Cube");

float size_x = plane.GetComponent ().mesh.bounds.size.x;

float scal_x = plane.transform.localScale.x;

float size_z = plane.GetComponent ().mesh.bounds.size.z;

float scal_z = plane.transform.localScale.z;

mapWidth = size_x * scal_x;

mapHeight = size_z * scal_z;

widthCheck = mapWidth / 2;

heightCheck = mapHeight / 2;

check ();

}

void OnGUI(){

keyUp = GUILayout.RepeatButton ("向前移动");

keyDown = GUILayout.RepeatButton ("向后移动");

keyLeft = GUILayout.RepeatButton ("向左移动");

keyRight = GUILayout.RepeatButton ("向右移动");

GUI.DrawTexture (new Rect (Screen.width - map.width, 0, map.width, map.height), map);

GUI.DrawTexture (new Rect (mapcube_x, mapcube_y, map_cube.width, map_cube.height), map_cube);

}

void FixedUpdate(){

if (keyUp) {

cube.transform.Translate(Vector3.forward * Time.deltaTime *5);

check();

}

if (keyDown) {

cube.transform.Translate(-Vector3.forward * Time.deltaTime *5);

check();

}

if (keyLeft) {

cube.transform.Translate(-Vector3.right * Time.deltaTime *5);

check();

}

if (keyRight) {

cube.transform.Translate(Vector3.right * Time.deltaTime *5);

check();

}

}

void check(){

float x = cube.transform.position.x;

float z = cube.transform.position.z;

if (x >= widthCheck) {

x = widthCheck;

}

if (x <= -widthCheck) {

x = -widthCheck;

}

if (z >= heightCheck) {

z = heightCheck;

}

if (z <= -heightCheck) {

z = -heightCheck;

}

cube.transform.position = new Vector3(x,cube.transform.position.y,z);

mapcube_x = (map.width/mapWidth * x) + ((map.width/2) - (map_cube.width/2) + (Screen.width - map.width));

mapcube_y = map.height - ((map.height/mapHeight * z) + (map.height/2));

}

}

编写好代码后,将代码拖动到摄像机上,再将背景与主角的贴图分别绑定到Map与Map_cube上,如下图所示:

【unity3d中小地图制作】

点击运行,即可看到效果图如下,点击按键前后左右移动立方体,右上角的小地图中红色方框的位置随之改变。

【unity3d中小地图制作过程】

(PS:此方法较为简单,但是实用性不高。)

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可全国推荐就业!

上一篇:U3D图像的处理过程-Unity3d培训机构
下一篇:unity3d培训机构教你用Unity3D制作360°全景照片
选择城市和中心
贵州省

广西省

海南省