在Unity中实现小地图(Minimap)
小地图的基本概念
众所周知,小地图(或雷达)是用于显示周围环境信息的。首先,小地图是以主角为中心的。其次,小地图上应该用图标来代替真实的人物模型,因为小地图通常很小,玩家可能无法看清真实的模型。
大多数小地图都是圆形的,所以本文也将创建圆形小地图。通常小地图周围还会有一些按钮和标签,本文也会介绍。
创建场景
新建场景,导入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爪爪学院查找。
推荐阅读
-
web在html中引用JavaScript代码的实现(小程序在xwml中实现)
-
Unity实现VR中在黑板上写字效果
-
在小程序中实现 Mixins 方案
-
在Unity中实现小地图(Minimap)
-
微信小程序中悬浮窗功能的实现(主要探讨和解决在原生组件上的拖动)
-
在unity中实现分页扩展(旋转3D)功能(UGUI)(3)
-
在小程序中实现全局混入,以混入的形式扩展小程序的api
-
在Unity中实现鼠标拖拽物体,滚轮控制物体远近的效果
-
vue实现百度地图坐标与input框地址的双向绑定(点击地图改变标注位置且具体位置显示在input框或input框中输入地址失去焦点后能在地图中定位)
-
在安卓开发中,使用腾讯地图实现定位与导航功能