等比映射小地图

其实等比映射小地图非常简单,而且特别节省性能,使用第二摄像机+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 等比映射小地图相关推荐

  1. Unity uGui RawImage 渲染小地图

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 制作类似 ...

  2. 【Unity Shader】Unity中阴影映射标准制作流程

    前半部分的基于图片的实时阴影技术是百人计划的前半部分总结,后面的Unity中的实现过程是<入门精要>中的实现. 1 基于图片的实时阴影技术 这里的"基于图片"指阴影生成 ...

  3. 【Unity基础】UI——小地图的制作 UI界面显示人物模型

    小地图的制作 [思路] 小地图的主要思路是用摄像机拍摄以人物为中心的一小步部分区域,把拍摄的图片实时渲染到UI界面的Img图片上. 首先需要一个摄像机 , 用来垂直拍摄人物的头顶,把模式改成正交模式, ...

  4. Unity Shader凹凸映射

    纹理的另一种常见的应用就是凹凸映射.凹凸映射的目的是使用一张纹理来修改模型表面的法线,以便为模型提供更多细节.这种方法不会真的改变模型的顶点位置,只是让模型看起来是"凹凸不平"的, ...

  5. 【Unity】NGUI/UGUI 小地图制作

    先看下 效果图 准备工作 0 创建两个摄像机  其中一个 在头顶 1 张圆心是透明的图 2 就是 写好的Shader  () 仅适用于UGUI 的shader : Shader "UIEx/ ...

  6. Unity 制作等比小地图并在小地图上标记出生点(类似于永劫无间、绝地求生、LoL小地图标记信号给队友)

    等比小地图PlayerIcon显示的坐标 核心两行: 1. 角色等比= 角色坐标 / 地形大小 2. 角色在小地图中的位置 = UImap地图大小(UI的大小) * 角色等比 + UI锚点偏移 小地图 ...

  7. Unity Shader 视差映射

    老规矩先上图: 视差映射是立体表现中比较常用的手段,但在具体理解的时候需要一定的抽象能力,下面分享一段非常简易的案例讲清什么是视察映射. 如下图所示,在未偏移以前假设取的是点A,这时需要在高度图中取得 ...

  8. unity简易的摄像机小地图制作

    记录一下fps游戏的简易的小地图制作过程,先放一下效果图 如图我们需要在地图上显示敌人和玩家的特殊图标,但是摄像机识别Culling Mask的是layer层,所以通过设置这个层的id来让主摄像机不显 ...

  9. Unity手柄按键映射

    Windows+PS4手柄 按扭 Button 轴 方块 joystick button 0 X joystick button 1 圈 joystick button 2 三角 joystick b ...

最新文章

  1. 二叉树:二叉搜索树实现 逆序数问题
  2. 程序是一座城,八年来我深陷其中
  3. Genome Biology:人体各部位微生物组时间序列分析Moving Pictures
  4. 1.6 文件上传组件
  5. c# 遍历文件夹深度,C#遍历文件夹,直到找到正确的文件
  6. AIoT时代的新思维
  7. 导入Oracle 数据库镜像,创建Oracle虚拟机_01
  8. linux下进程监控6,Linux进程监控技术—精通软件性能测试与LoadRunner最佳实战(6)...
  9. OpenCV (iOS)中的形态学变换(11)
  10. windows 8.1 IE11 和 windows 10 Edge IE11 FlashPlayer 的安装与卸载
  11. 【论文笔记】Simple and Deep Graph Convolutional Networks
  12. 学 shell (1/5)
  13. 视觉SLAM之词袋(bag of words) 模型与K-means聚类算法浅析
  14. Spring源码分析
  15. 10 工作中常见知识汇总
  16. CAD转CAD注意事项
  17. HTML5九宫格拼图小游戏
  18. (附源码)ssm汽车租赁——持续输出BU 毕业设计 271621
  19. 爬取天涯帖子(单个帖)
  20. npm install 时报错:npm WARN vueproject@1.0.0 No repository field.(缺少repository字段)

热门文章

  1. 小智机器人有初中课程吗_有网上直播初中课程的吗
  2. 数学家苏青云不为人知的故事
  3. AI作画升级!一键帮你用Stable Diffusion 生成无限缩放效果视频
  4. Shopify怎么添加发货方式
  5. 哈工大《大数据计算基础》课程资料链接
  6. 敌人的敌人是朋友:苹果欲联手Google干掉Amazon?
  7. 近世代数 笔记与题型连载 第十三章(环与域)
  8. 不能进入windows xp系统如何进行系统还原
  9. 打造视听游戏新体验:TCL T7G真高刷电视II发布
  10. 32908字长文理解Large Vision Model:Segment Anything