unity VR中制作小地图的方法

在许多漫游场景中,我们可能会遇到需要小地图的情况,这是为了进行重要地点标识以及指引方向。同样在VR中漫游中,如何处理方向导航仍然成为一个问题,这里给出一种将3D游戏中的小地图移植到VR相机中的思路。
以下是具体制作过程:

一、制作3D游戏的小地图:

1、首先创建一个简单的场景,使得我们在小地图中有物体可以观察。
场景中具体包括一个第一人称的控件和四个不同形状的物块(染成不同颜色仅仅是为了区分)。
在这里插入图片描述
导入第一人称控件的方法:选中Assets,右键选中Import Package,选择Characters,然后可以看到Standard Assets中有一个Characters文件夹,找到Prefabs中的RigidBodyFPSController(以下简称Controller)拖入场景即可,可以看到Controller自带一个Camera。
在这里插入图片描述
同时给它添加一个Quad,调整参数使它位于Controller的正上方,模拟小地图中主角的图标,同样染一个其他颜色以作区分。
在这里插入图片描述
添加方法:选中Controller,右键,选中3D Object,即可看到Quad。
2、创建3D下的小地图视角。
在这里插入图片描述
新建一个Camera,命名为Camera_Map以作区分,把Projection改成Orthography(正视投影),将它调整位于场景上方,大小正好可以包住场景,至此,可以在右下角的相机预览中看到小地图的雏形。
3、更改小地图形状。
新建一个Image和RawImage,其中RawImage是Image的子物体,两者位置重合,将Image命名为Image_Mask,用作遮罩层。
导入一张事先准备好的圆形图片mask_circle.png,用作遮罩层形状。
在这里插入图片描述
将Texture Type改为Sprite(2D and UI),点击Apply。
在这里插入图片描述
给Image_Mask添加一个Mask的组件,将mask_circle拖入Source Image中,即可看到效果:
在这里插入图片描述
在这里插入图片描述
4、将小地图视角投到画布上去。
新建一个Render Texture,选中Assets,右键,create选中Render Texture,命名为Render_tex,将Render_tex分别拖入Camera_Map中的Target Texture和RawImage中的Texture,即可看到中央的圆形小地图。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
到这一步3D视角下的小地图已经制作完成,只要将它放在画布的右上左上角就可以投入使用。

二、将小地图移植到VR中:

1、更改相机类型。
这是区分普通3D游戏和VR游戏最基本的一步,只有换成VR相机后,才能在头盔中观察到场景。这里我们将Controller向前的Camera删掉,重新添加进VR相机,只需将Steam VR包中的CameraRig直接拖入。
在这里插入图片描述
这里有一个细节,需要将Controller的控制脚本改成对应的Camera(eye),否则在后续移动时,方位可能会出错,有点“找不着北”。
在这里插入图片描述
2、更改画布类型。
然后将Canvas的Render Mode改成World Space,然后将Event Camera设置为CameraRig中的Camera(eye),这样才能在VR相机中观察到Canvas。
在这里插入图片描述
3、将画布附在手柄上。
最后一步将Canvas设置成VR手柄的子物体,可以跟随移动,同样调整Canvas和Image大小以及位置到合适为止。
在这里插入图片描述
4、为小地图添加“收起”和“打开”的控制。
在漫游时,并不是每时每刻都需要小地图的导航,有些时候小地图的存在反而遮挡了视线,影响漫游效果,所以很有必要让小地图在需要时出现,不需要时就隐藏起来。
在控制VR相机移动的脚本中加入以下代码:
在这里插入图片描述
这里的设定是利用扳机控制地图的隐藏和出现,当然你也可以使用其他交互方式。
在这里插入图片描述

三、效果。

最后的效果就是扣动扳机,屏幕中央出现小地图,再次扣动扳机,小地图消失。同时小地图上会显示“自己”与其他物体的相对距离,可以看到“自己”在小地图上移动。
一些效果截图:
在这里插入图片描述

发布了6 篇原创文章 · 获赞 17 · 访问量 3137

猜你喜欢

转载自blog.csdn.net/weixin_40754097/article/details/89629516