《精通Unreal游戏引擎》一第5步 使用减法BSP继续创建地图

简介:

本节书摘来异步社区《精通Unreal游戏引擎》一书中的第5步,作者: 【英】Ryan Shah(沙哈)译者: 王晓慧 责编: 陈冀康,更多章节内容可以访问云栖社区“异步社区”公众号查看。

第5步 使用减法BSP继续创建地图

精通Unreal游戏引擎
什么是Subtraction Volume(减法体)?Subtraction Volume(减法体)和BSP网格配合使用,可以从场景中删除BSP块。例如使用BSP创建一面墙,墙中有一扇门。首先新建一面墙,然后使用减法BSP从墙中凿出一扇门。下面我们就来学习如何实现。

创建减法BSP的过程和上一节我们创建墙的过程没有太大区别。事实上,这两个过程几乎一样。首先创建另一个立方体。如同前面的操作,前往Modes(模式)窗口(通常在项目主窗口的左上角),如图36所示。


36

注意:
该工具栏会根据您屏幕的分辨率隐藏一些选项。拖拉工具栏的底部和侧面边框来扩展它,就可以看到所有选项!

选择BSP,如图37所示,单击Box(盒子)并拖拽它到项目场景视图中。


37

现在场景中在您放置BSP的地方已经有了一个大小合适的盒子。需要注意的是,如果您的盒子有一半陷在了地板里,或者有一半嵌入了墙中,可以使用Transform(平移)工具(由3个箭头组成,分别是蓝色、红色和绿色)移动盒子让它刚好坐落在地面上。如果您没有看到平移工具,在场景中直接单击盒子即可。

下面使用Geometry Edit(几何体编辑)模式将盒子编辑成门框的形状。参考Unreal Engine 4提供的模板,盒子的高度是190cm左右。即使使用Geometry Edit(几何体编辑)工具也很难精确地测量,所以尝试做到门的高度至少在200cm左右,这样游戏角色才能轻松地穿过。一个测试的好方法是单击Alt+P运行关卡,确认立方体与角色对齐(单击ESC键退出Play-in-editor模式)。

但是当使用Play-in-editor模式时,您可能会发现游戏角色在场景中地板的下面,好像跌入了深渊,或者角色和新建的立方体不在同一个区域(因为此刻的地图被分成了4个区域)。

为解决这一问题,前往Scene Outliner(场景大纲视图,在Unreal Engine 4窗口的右上角),如图38所示。


38

在Scene Outliner(场景大纲视图)窗口中向下滚动找到Player Start,单击它。现在场景视图中,游戏角色已经在被选中,您可以使用Transform(平移)工具将其移动到新建的立方体附近。

然后将立方体编辑成门的形状,下面该把它变成减法BSP了。在此之前,为了进行后面的操作,我们将这扇门复制4次。具体方式是右键(Mac上是Ctrl键+鼠标左键)单击它,在弹出的菜单中选择Edit(编辑)>Copy(复制),如图39所示。这是因为减法BSP虽然可以复制,但是它们在场景中并不明显(只有红色的线框提示),这样很难展示我们的操作。


39

4扇门已经创建好,下面把它们放到合适的位置。我将以其中一扇门为例示范如何操作,剩下的就很简单了。单击场景中的任意一面墙,使用平移工具移动选中的这扇门嵌入到这面墙中间,如图40所示。


40

注意:
为了更好地看清楚该屏幕截图,这里对门使用了草坪材质。

在移动门将其嵌入墙的过程中,您可能会发现用作门的这个立方体的厚度不及墙的厚度。为了成功地从墙中凿开一扇门,门的两个面都需要漏在墙的外面,虽然不需要很精确,但至少门的厚度要比墙的厚度大。

如何调整门的厚度呢?还记得Modes(模式)窗口的Geometry Edit(几何体编辑)工具吗?使用该工具调整门的两个面之间的厚度,使得门的前面和后面都漏在墙外面,如图41所示。


41

注意:
地板设置为透明,为了展示墙的内部,显示门嵌入墙中,并且门的前后都漏在墙外。'

将立方体编辑为门的形状,并确定好位置之后,下面就准备将立方体变成一扇门。选中该立方体,Details(细节)面板中显示其属性,如图42所示。Details(细节)面板的默认位置是主窗口的右边,Scene Outliner(场景大纲视图)窗口的下面。


42

在Details(细节)面板的属性设置中,有一个Brush Settings部分位于面板上方、Search(搜索框)下面。其中第一个选项是Brush Type(画刷类型),默认值是Additive,意思是将BSP添加到场景中。我们想要的是从场景中删除BSP,单击下拉框,在弹出的下拉菜单中选择Subtractive。这时您会看到,之前我们创建的BSP不可见了。与添加BSP不同,Subtractive是指从场景中减去BSP,即删除墙里面的几何体,如图43所示。


43

注意:
“减法”BSP只对BSP有效,不适用于静态网格!

此刻您会发现地板被减去的门吞噬了一部分,我们将在设置好所有门之后解决这个问题。下面对现在的关卡进行一个快速的测试(Alt键+P键测试,ESC键退出),以保证游戏角色能够穿过这扇门,如图44所示。


44

下面对余下的这3扇门进行同样的设置操作。为了让角色能够在地图中自由地穿行,为游戏场地中的每一面内墙上都凿出一扇门,如图45所示。创建好之后进行测试,让游戏角色从一个房间开始,穿过所有房间,最后回到起始房间。一旦完成上述操作,就可以继续下面的内容了。


45

相关文章
|
3月前
|
算法 安全 图形学
Unity Hololens2开发|(十一)MRTK3 Solver(求解器)
Unity Hololens2开发|(十一)MRTK3 Solver(求解器)
|
10月前
|
定位技术 API 图形学
unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)
unity-2D游戏官方案例--带视频案例(1)(层级渲染,物理碰撞,粒子动画,UI等多位基础一体化)
132 1
|
图形学
从0开发游戏引擎之游戏引擎中2D序列帧动画控制器的实现
需要的图片类似图1.1 会把所有的动作拼接到一张图上,这样做也是为了节省内存和减少DrawCall,切换动作的时候只需要重新计算图片的UV,然后把算出来的UV作为新区域贴在原来的那张纹理面片上即可。
从0开发游戏引擎之游戏引擎中2D序列帧动画控制器的实现
|
iOS开发 开发者
iOS开发CoreGraphics核心图形框架之四——变换函数
iOS开发CoreGraphics核心图形框架之四——变换函数
130 0
|
iOS开发 开发者
iOS开发CoreGraphics核心图形框架之一——CGPath的应用(二)
iOS开发CoreGraphics核心图形框架之一——CGPath的应用
515 0
iOS开发CoreGraphics核心图形框架之一——CGPath的应用(二)
|
Swift C语言 iOS开发
iOS开发CoreGraphics核心图形框架之一——CGPath的应用(一)
iOS开发CoreGraphics核心图形框架之一——CGPath的应用
289 0
iOS开发CoreGraphics核心图形框架之一——CGPath的应用(一)