小地图的基本概念

众所周知,小地图(或雷达)是用于显示周围环境信息的。首先,小地图是以主角为中心的。其次,小地图上应该用图标来代替真实的人物模型,因为小地图通常很小,玩家可能无法看清真实的模型。

大多数小地图都是圆形的,所以本文也将创建圆形小地图。通常小地图周围还会有一些按钮和标签,本文也会介绍。

创建场景

新建场景,导入Unity Chan模型作为玩家,导入两个机器人作为敌人。

游戏视图

添加一个新的相机。依次点击菜单项GameObject -> Camera新建相机并命名为Minimap Camera。然后将该相机设为Unity Chan的子对象,并将其坐标设为Unity Chan上方10个单位,把相机对准Unity Chan模型。

设置Minimap Camera

为了达到更好的效果,将position设为(0, 10, 0),rotation设为(90, 0, 0)。现在相机显示效果如下:

但这还不是小地图。现在运行场景,你可以看到只有上图中的内容显示出来。我们必须把小地图做成一个UI元素。

渲染到UI层

这里需要用到Render Texture来实现。依次点击菜单项Assets -> Create -> Render Texture新建Render Texture并命名为Minimap Render Texture。

选中Minimap Camera后在检视面板将Target Texture字段设为Minimap Render Texture。

现在运行场景会发现Minimap Camera中的内容不见了,这是因为它被显示到了新建的Render Texture中。

下面新建Canvas来添加UI元素。依次点击菜单项GameObject -> UI -> Canvas来新建Canvas。

这里需要使用Raw Image在Canvas中显示Render Texture的内容。依次点击菜单项GameObject -> UI -> Raw Image新建Raw Image,然后命名为Minimap Image,在检视面板中将Texture字段设为Minimap Render Texture。

现在Minimap Camera相机中的内容可以作为UI来显示了!

下面将小地图变为圆形。这里需要用到一张简单的遮罩纹理:

新建Image并为其添加Mask组件,将Image的Source Image字段设为上面的遮罩图片,并将Minimap Image设为Mask的子对象。

注意:为了达到更好的视觉效果,记得禁用遮罩纹理的Mipmap。

现在小地图显示效果如下:

小地图的白色背景看起来不太美观,给它加一个边框:

为了让整个小地图移动起来更方便,新建一个空的GameObject命名为Minimap,并将所有对象设为Minimap子对象。

最后将小地图移至屏幕右上角。

效果不错吧?但这还不是真正意义上的小地图,只是相机从顶部取景的图像而已。接下来通过Layer来做一些设置!

设置Layer

这里需要新建一个Layer。依次点击菜单项Edit -> Project Settings -> Tags and Layers新建Layer命名为Minimap。

然后新建三个球体。一个设为蓝色代表Unity Chan。将该球体设为Unity Chan的子对象,并将其Layer设为Minimap。

对两个机器人进行同样的操作,将球体改为红色。

现在最关键的一步来了!选中Main Camera并确保其Culling Mask中不包括Minimap这一层。

然后选中Minimap Camera让其Culling Mask只包括Minimap这一层。

现在这个小地图看起来就比较完善了!

最后步骤

还可以做一些调整。首先将Minimap Camera的Clear Flags设为Solid Color并将其颜色改为浅灰色,以便让小地图背景与小球的对比度更强。

还可以添加一些UI元素来操作小地图。这里使用标签作为示例,最后结果如下:

当角色或机器人移动时,小地图上的小球也会即时更新位置。

更多unity2018的功能介绍请到paws3d爪爪学院查找。链接https://www.paws3d.com/,也可以加入unity学习讨论群935714213

近期更有资深开发人士直播分享unity开发经验,详情请进入官网或加入QQ群了解

在Unity中实现小地图(Minimap)相关推荐

  1. Unity中UGUI小地图实现的原理

    计算出Unity中场景的长于宽,计算出人物在场景中的X与Y轴,然后计算X与Y的位置在场景大地图上的比例,按照比例给小地图赋值即可. public class UIMap : MonoBehaviour ...

  2. Unity中如何计算带minimap的贴图资源的大小

    /// <summary>/// 计算贴图大小,包含mipmap内存的叠加/// </summary>/// <param name="tTexture&quo ...

  3. unity3d 绘制小地图_Unity中实现小地图的几种方式

    Unity 制作小地图系统 两种方法 方法2:Github:GentleTank 方法1:使用额外相机 这个小地图添加在上一篇中AI坦克项目上. 小地图的是实现原理很简单,就是添加多一个相机,设置垂直 ...

  4. 2D 游戏工具系列:unity自带Tilemap和地图编辑器Tiled的基本使用以及Super Tiled2Unity如何导入tmx到Unity中(3)

    地图已经制作好了,现在需要把地图导入到unity中了,一般使用的是老版的Tiled2Unity,但是这个插件现在作者不在更新了,取而代之的是Super Tiled2Unity ,两个的使用方法还是很不 ...

  5. 学习在Unity中创建一个动作RPG游戏

    游戏开发变得简单.使用Unity学习C#并创建您自己的动作角色扮演游戏! 你会学到什么 学习C#,一种现代通用的编程语言. 了解Unity中2D发展的能力. 发展强大的和可移植的解决问题的技能. 了解 ...

  6. 学习用C#在Unity中创建一个2D Metroidvania游戏

    学习用C#在Unity中创建一个2D Metroidvania游戏 你会学到: 构建2D Unity游戏 用C#编程 玩家统计,水平提升,米尔和远程攻击 敌方人工智能系统 制定级别和级别选择 Lear ...

  7. 在Unity中制作4种不同的游戏

    流派:电子学习| MP4 |视频:h264,1280×720 |音频:AAC,48.0 KHz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:8.6 GB 含课程素材 |时长:15h ...

  8. 学会在Unity中创建一个Match-3益智游戏 Learn To Create a Match-3 Puzzle Game in Unity

    MP4 |视频:h264,1280×720 |音频:AAC,44.1 KHz,2 Ch 语言:英语+中英文字幕(根据原英文字幕机译更准确) |时长:48场讲座(6h 38m) |大小解压后:2.8 G ...

  9. Unity中创建本地多人游戏完整案例视频教程 Learn To Create A Local Multiplayer Game In Unity

    Unity中创建本地多人游戏完整案例视频教程 Learn To Create A Local Multiplayer Game In Unity MP4 |视频:h264,1280x720 |音频:A ...

最新文章

  1. Java Build Tools: Ant vs Maven vs Gradle
  2. matlab练习程序(图像区域分裂)
  3. 用iptable简单的给web服务器做安全
  4. Consider static factory methods instead of constructor
  5. matlab给plc发送命令,想学习下如何将PLC发送的指令让软件接收到?
  6. mac 鼓捣php 多版本切换
  7. android 访问服务器sql_一次服务器被传webshell事件溯源
  8. mysql vc运行库_VC++运行库安装
  9. [转]用.net快速开发下载软件
  10. Internet连接共享只能上qq不能打开网页的问题解决
  11. python rgb颜色表_[置顶] RGB颜色查询对照表
  12. MEMORY系列之“DDR概述”
  13. Js数组里删除指定的元素(不是指定的位置)
  14. 2013款Mac Pro“神秘”主机详解
  15. 已解决Building wheels for collected packages: lxml
  16. 【收藏】JavaWeb项目详解:水果库存后台管理系统(servlet+thymeleaf+mysql)
  17. 7.Docker容器使用辅助工具汇总
  18. Beam Failure Detection
  19. 【OpenCV】2020年关于SIFT算法专利版权问题的解决办法
  20. char **和char* []区别,char *和char []区别

热门文章

  1. ggplot2图形排版:patchwork包简单入门
  2. 如何推导出Gamma分布
  3. 物联网是什么?猿承科技
  4. 基于《狂神说Java》Vue--学习笔记
  5. ConcurrentHashMap底层详解(图解扩容)(JDK1.8)
  6. MySQL驱动到什么东西?
  7. 制作无后端的静态网页
  8. python bind_Python tkinter之Bind(绑定事件)
  9. 全球及中国汽车后市场产销规模现状及投资盈利风险分析报告2021-2027年
  10. ESP8266 Arduino开发之路(2)— 连接到无线WiFi路由器