Unity3D学习笔记-------小地图制作
制作小地图首先需要两个贴图:第一个贴图是小地图的背景贴图,它应当是从y轴向下俯视截取的贴图;第二个贴图是主角位置贴图,它应当是在背景贴图之上的小型矩形。
1 using UnityEngine;
2 using System.Collections;
3
4 public class smallMap : MonoBehaviour {
5 // Use this for initialization
6 GameObject plane; //大地图地形对象
7 GameObject cube; //大地图主角对象
8 float mapWidth; //大地图的宽度
9 float mapHeight; //大地图的高度
10 //地图边界检查
11 float widthCheck;
12 float heightCheck;
13 //小地图主角位置
14 float mapcube_x = 0;
15 float mapcube_y = 0;
16 //GUI按钮是否被按下
17 bool keyUp;
18 bool keyDown;
19 bool keyLeft;
20 bool keyRight;
21
22 public Texture map; //小地图的贴图
23 public Texture map_cube; //小地图的主角贴图
24 void Start () {
25 plane = GameObject.Find("Plane");
26 cube = GameObject.Find("Cube");
27 float size_x = plane.GetComponent<MeshFilter>().mesh.bounds.size.x; //得到大地图的默认宽度
28 float scale_x = plane.transform.localScale.x; //得到大地图宽度的缩放比例
29 float size_z = plane.GetComponent<MeshFilter>().mesh.bounds.size.z; //得到大地图的默认高度
30 float scale_z = plane.transform.localScale.z; //得到大地图高度的缩放比例
31 mapWidth = size_x * scale_x;
32 mapHeight = size_z * scale_z;
33 widthCheck = mapWidth / 2;
34 heightCheck = mapHeight / 2;
35 check();
36 }
37
38 // Update is called once per frame
39 void Update () {
40
41 }
42
43 void OnGUI() {
44 keyUp = GUILayout.RepeatButton("向前移动");
45 keyDown = GUILayout.RepeatButton("向后移动");
46 keyRight = GUILayout.RepeatButton("向右移动");
47 keyLeft = GUILayout.RepeatButton("向左移动");
48 GUI.DrawTexture(new Rect(Screen.width - map.width, 0, map.width, map.height), map);
49 GUI.DrawTexture(new Rect(mapcube_x, mapcube_y, map_cube.width, map_cube.height), map_cube);
50 }
51
52 void FixedUpdate() {
53 if (keyUp) {
54 cube.transform.Translate(Vector3.forward * Time.deltaTime * 5);
55 check();
56 }
57 if (keyDown) {
58 cube.transform.Translate(-Vector3.forward * Time.deltaTime * 5);
59 check();
60 }
61 if (keyRight) {
62 cube.transform.Translate(Vector3.right * Time.deltaTime * 5);
63 check();
64 }
65 if (keyLeft) {
66 cube.transform.Translate(Vector3.left * Time.deltaTime * 5);
67 check();
68 }
69 }
70
71 void check() {
72 float x = cube.transform.position.x;
73 float z = cube.transform.position.z;
74 if (x < -widthCheck) {
75 x = -widthCheck;
76 }
77 if (x > widthCheck) {
78 x = widthCheck;
79 }
80 if (z < -heightCheck) {
81 z = -heightCheck;
82 }
83 if (z > heightCheck) {
84 z = heightCheck;
85 }
86 mapcube_x = (map.width / mapWidth * x) + ((map.width / 2) - (map_cube.width / 2)) + (Screen.width - map.width);
87 mapcube_y = map.height - ((map.height / mapHeight * z) + (map.height / 2));
88 }
89 }

Unity3D学习笔记-------小地图制作的更多相关文章
- unity3d学习笔记(一) 第一人称视角实现和倒计时实现
unity3d学习笔记(一) 第一人称视角实现和倒计时实现 1. 第一人称视角 (1)让mainCamera和player(视角对象)同步在一起 因为我们的player是生成的,所以不能把mainCa ...
- Unity3D学习笔记2——绘制一个带纹理的面
目录 1. 概述 2. 详论 2.1. 网格(Mesh) 2.1.1. 顶点 2.1.2. 顶点索引 2.2. 材质(Material) 2.2.1. 创建材质 2.2.2. 使用材质 2.3. 光照 ...
- Unity3D学习笔记3——Unity Shader的初步使用
目录 1. 概述 2. 详论 2.1. 创建材质 2.2. 着色器 2.2.1. 名称 2.2.2. 属性 2.2.3. SubShader 2.2.3.1. 标签(Tags) 2.2.3.2. 渲染 ...
- Unity3D学习笔记4——创建Mesh高级接口
目录 1. 概述 2. 详论 3. 其他 4. 参考 1. 概述 在文章Unity3D学习笔记2--绘制一个带纹理的面中使用代码的方式创建了一个Mesh,不过这套接口在Unity中被称为简单接口.与其 ...
- Unity3D学习笔记6——GPU实例化(1)
目录 1. 概述 2. 详论 3. 参考 1. 概述 在之前的文章中说到,一种材质对应一次绘制调用的指令.即使是这种情况,两个三维物体使用同一种材质,但它们使用的材质参数不一样,那么最终仍然会造成两次 ...
- Unity3D学习笔记7——GPU实例化(2)
目录 1. 概述 2. 详论 2.1. 实现 2.2. 解析 3. 参考 1. 概述 在上一篇文章<Unity3D学习笔记6--GPU实例化(1)>详细介绍了Unity3d中GPU实例化的 ...
- Unity3D学习笔记8——GPU实例化(3)
目录 1. 概述 2. 详论 2.1. 自动实例化 2.2. MaterialPropertyBlock 3. 参考 1. 概述 在前两篇文章<Unity3D学习笔记6--GPU实例化(1)&g ...
- Unity3D学习笔记12——渲染纹理
目录 1. 概述 2. 详论 3. 问题 1. 概述 在文章<Unity3D学习笔记11--后处理>中论述了后处理是帧缓存(Framebuffer)技术实现之一:而另外一个帧缓存技术实现就 ...
- NGUI 学习笔记实战——制作商城UI界面
http://www.cnblogs.com/chongxin/p/3876575.html Unity3D的uGUI听说最近4.6即将推出,但是目前NGUI等UI插件大行其道并且已经非常成熟,所以我 ...
随机推荐
- 常见sql语句及复杂sql语句记录
1 将A表中的部分字段和B表中的部分字段作为C表的字段 SELECT a.name,b.age FROM (SELECT * from A) as a,(SELECT * from B) as ...
- Windows10 安装配置IIS,并将程序发布到服务器上
1.确保计算机链接网络(也可在不联网的时候使用安装包进行IIS的安装): 2.打开“控制面板”(“菜单”按钮+x 快捷键)——“程序”——“打开或关闭Windows功能”——展开“Internet信息 ...
- CI 笔记,使用 json的参考文档(废弃)
Json的处理转换, Json转换步骤, a) 先设置json为空字符串, b) While循环,遍历, While(!!$row = mysql_fetch_arra ...
- iOS 开发工具
Github 社区 https://github.com/ iOS 开发类库 http://www.code4app.com/thread-7831-1-1.html (出处: Code4App-iO ...
- CSS 背景
CSS 背景属性用于定义HTML元素的背景. CSS 属性定义背影效果: background-color background-image background-repeat background- ...
- ios专题 - socket(1)
二,BSD socket API 简介 BSD socket API 和 winsock API 接口大体差不多,下面将列出比较常用的 API: API接口 讲解 int socket(int add ...
- 原生JS实现幻灯片轮播效果
在以往的认知中,一直以为用原生JS写轮播是件很难得事情,今天上班仿照网上的写了一个小demo.小试牛刀. 大致效果: html结构很简单,两个列表,一个代表图片列表,一个是右下角序号列表. <d ...
- Windows phone 之自定义控件(补充)
<UserControl xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x= ...
- 基于管道通知的百万并发长连接server模型
0.前言 最近突然想了解怎样设计一个支持百万连接的后台server架构. 要设计一个支持百万连接的后台server,我们首先要知道会有哪些因素限制后台server的高并发连接,这里想到的因素有以下几点 ...
- 关于webapp的一个webframe问题
最近重启ios webapp的项目,将之前的框架拿过来发现出现了错误,错误出现在写JSAlart控件的WebFrame上,xcode会报WebFrame是未定义的错误.由于之前使用的是ios5的 sd ...