Unity 等比映射小地图
等比映射小地图
其实等比映射小地图非常简单,而且特别节省性能,使用第二摄像机+Rendertexture方式实现小地图,操作起来是简单,但是相对来说它的性能消耗也很大,对于开发人员来说,一定要做到控制性能的优化,才能让自己项目的体验更加流畅,更加吸引人!
闲话少说上代码
using System.Collections;
using System.Collections.Generic;
using UnityEngine;public class MiniMap : MonoBehaviour {/// <summary>/// 大地型对象/// </summary>public GameObject Plane;/// <summary>/// 玩家对象/// </summary>public GameObject Player;/// <summary>/// 小地图贴图/// </summary>public Texture MapTexture;/// <summary>/// 小地图玩家贴图/// </summary>public Texture PlayerTexture;/// <summary>/// 大地型宽度/// </summary>private float MaxMapWidth;/// <summary>/// 大地型高度/// </summary>private float MaxMapHeight;/// <summary>/// 玩家在小地图的位置宽度/// </summary>private float MinMapWidth;/// <summary>/// 玩家在小地图的位置高度/// </summary>private float MinMapHeight;/// <summary>/// 大地图默认宽度/// </summary>private float MaxMapRealyWidth;/// <summary>/// 大地图默认高度/// </summary>private float MaxMapRealyHeight;/// <summary>/// 玩家当前在地图中的宽度/// </summary>private float PlayerInMapWidth;/// <summary>/// 玩家当前在地图中的高度/// </summary>private float PlayerInMapHeight;private void Start(){MaxMapRealyWidth = Plane.GetComponent<MeshFilter>().mesh.bounds.size.x;MaxMapRealyHeight = Plane.GetComponent<MeshFilter>().mesh.bounds.size.z;//得到大地图高度缩放地理float scal_z = Plane.transform.localScale.z;MaxMapRealyHeight = MaxMapRealyHeight * scal_z;//得到大地图高度缩放地理float scal_x = Plane.transform.localScale.x;MaxMapRealyWidth = MaxMapRealyWidth * scal_x;Check();}private void FixedUpdate(){Check();}private void OnGUI(){GUI.DrawTexture(new Rect(Screen.width - MapTexture.width/4, 0, MapTexture.width/4, MapTexture.height/4), MapTexture);GUI.DrawTexture(new Rect(MinMapWidth, MinMapHeight, 20, 20), PlayerTexture);}void Check(){//根据比例计算小地图“主角”的坐标MinMapWidth = (MapTexture.width * Player.transform.position.x/ MaxMapRealyWidth) + ((MapTexture.width /4 / 2) - (20 / 2)) + (Screen.width - MapTexture.width/4);MinMapHeight = MapTexture.height/4 - ((MapTexture.height/4 * Player.transform.position.z / MaxMapRealyHeight) + (MapTexture.height / 4/ 2 + 30));}}
其中有四个需要拖拽的Public的游戏对象
plane —-> 就是你的地形
player —-> 就是你的主角
MapTexture —-> 就是小地图纹理
playerTexture —-> 就是代表主角的纹理
计算原理
1.首先计算小地图的位置
小地图假设放到右上角,那么小地图的位置起点就应该是屏幕宽度减去小地图本身的宽度,高就是0
2.其次计算玩家纹理在小地图上的位置
我们就拿玩家在场景的左下角出生为例,那么玩家在小地图上也应该是在小地图的左下角才是正确的,首先先把玩家放到小地图的左下角,那么玩家在小地图的x应该是屏幕宽度减去小地图宽度,y应该是小地图的高度,第一步完成,第二步如果玩家移动,那么小地图上玩家也要动,怎么动是需要计算的,首先求出小地图和大地图的比例,然后乘上玩家的x,z就的到了玩家应该在小地图上移动的x,y;
如果还有看不懂的地方,评论留下你的疑惑,定会及时为你解决
Unity 等比映射小地图相关推荐
- Unity uGui RawImage 渲染小地图
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 制作类似 ...
- 【Unity Shader】Unity中阴影映射标准制作流程
前半部分的基于图片的实时阴影技术是百人计划的前半部分总结,后面的Unity中的实现过程是<入门精要>中的实现. 1 基于图片的实时阴影技术 这里的"基于图片"指阴影生成 ...
- 【Unity基础】UI——小地图的制作 UI界面显示人物模型
小地图的制作 [思路] 小地图的主要思路是用摄像机拍摄以人物为中心的一小步部分区域,把拍摄的图片实时渲染到UI界面的Img图片上. 首先需要一个摄像机 , 用来垂直拍摄人物的头顶,把模式改成正交模式, ...
- Unity Shader凹凸映射
纹理的另一种常见的应用就是凹凸映射.凹凸映射的目的是使用一张纹理来修改模型表面的法线,以便为模型提供更多细节.这种方法不会真的改变模型的顶点位置,只是让模型看起来是"凹凸不平"的, ...
- 【Unity】NGUI/UGUI 小地图制作
先看下 效果图 准备工作 0 创建两个摄像机 其中一个 在头顶 1 张圆心是透明的图 2 就是 写好的Shader () 仅适用于UGUI 的shader : Shader "UIEx/ ...
- Unity 制作等比小地图并在小地图上标记出生点(类似于永劫无间、绝地求生、LoL小地图标记信号给队友)
等比小地图PlayerIcon显示的坐标 核心两行: 1. 角色等比= 角色坐标 / 地形大小 2. 角色在小地图中的位置 = UImap地图大小(UI的大小) * 角色等比 + UI锚点偏移 小地图 ...
- Unity Shader 视差映射
老规矩先上图: 视差映射是立体表现中比较常用的手段,但在具体理解的时候需要一定的抽象能力,下面分享一段非常简易的案例讲清什么是视察映射. 如下图所示,在未偏移以前假设取的是点A,这时需要在高度图中取得 ...
- unity简易的摄像机小地图制作
记录一下fps游戏的简易的小地图制作过程,先放一下效果图 如图我们需要在地图上显示敌人和玩家的特殊图标,但是摄像机识别Culling Mask的是layer层,所以通过设置这个层的id来让主摄像机不显 ...
- Unity手柄按键映射
Windows+PS4手柄 按扭 Button 轴 方块 joystick button 0 X joystick button 1 圈 joystick button 2 三角 joystick b ...
最新文章
- 二叉树:二叉搜索树实现 逆序数问题
- 程序是一座城,八年来我深陷其中
- Genome Biology:人体各部位微生物组时间序列分析Moving Pictures
- 1.6 文件上传组件
- c# 遍历文件夹深度,C#遍历文件夹,直到找到正确的文件
- AIoT时代的新思维
- 导入Oracle 数据库镜像,创建Oracle虚拟机_01
- linux下进程监控6,Linux进程监控技术—精通软件性能测试与LoadRunner最佳实战(6)...
- OpenCV (iOS)中的形态学变换(11)
- windows 8.1 IE11 和 windows 10 Edge IE11 FlashPlayer 的安装与卸载
- 【论文笔记】Simple and Deep Graph Convolutional Networks
- 学 shell (1/5)
- 视觉SLAM之词袋(bag of words) 模型与K-means聚类算法浅析
- Spring源码分析
- 10 工作中常见知识汇总
- CAD转CAD注意事项
- HTML5九宫格拼图小游戏
- (附源码)ssm汽车租赁——持续输出BU 毕业设计 271621
- 爬取天涯帖子(单个帖)
- npm install 时报错:npm WARN vueproject@1.0.0 No repository field.(缺少repository字段)