自定义关卡

目前我们使用的是初学者包里的默认关卡。在前一篇文章中,我们已经知道如何导入并使用虚幻商城里的资产了。所以在这篇文章中,我们自己搭建一个关卡。

1. 几何体笔刷

如图 1.1 所示,我们点击 文件/新建关卡,选择 Basic,新建一个关卡。基础的关卡也很不错,有一个天空盒,默认光照也不错。

图1.1 新建关卡

新建好关卡后,我们点击窗口右上角的 设置/项目设置。如图 1.2 所示,我们选择“地图和模式”标签,然后把“编辑开始地图”和“游戏默认地图”设置成我们新建的关卡地图。这样后续打开项目,默认显示的就是我们新建的关卡。

图1.2 默认地图

接着我们开始搭建场景。如图 1.3 所示,我们点击 快速添加/放置Actor面板。然后选择几何标签,将“盒体”拖拽到视图中。在盒体的“画刷设置”选项中的 X/Y/Z,可以指定盒体尺寸。

缩放也能改变尺寸,但是可能会影响到纹理贴图的显示,所以我们在“画刷设置”里设置尺寸。

Unreal 里的单位是厘米。这个盒体我们想当成体育馆,所以尺寸大致设置为 36米x29米x9.6米。

图1.3 默认地图

现在这个盒体是实心的,我们需要“挖出”内部作为室内区域。Unreal 里有一个叫 Binary Space Partitioning (BSP) 的构建手段。翻译过来叫做,二进制空间划分。

听着有点抽象,实践下来和建模软件里面的布尔操作很像:我们复制之前的盒体,放在相同的位置。然后把之前的盒体长宽高都增加 2 米。接着把新建盒体的 笔刷类型 设置为 Subtractive,就能“挖出”指定大小的室内区域。

如图 1.4 所示,我们进入室内,可以继续使用相同的原理,“挖出”窗户。

图1.4 室内

2. 材质与灯光

如图 2 所示,我们点击筛选按钮,筛选材质。目前项目里已经自带了非常多的材质了,非常好。赋予物体材质,我们只需要选择材质球,拖拽到视图中想要的物体上即可。此处,我把墙壁设置成砖块,天花板设置成水泥,地板设置成木板。看着还不错。

大纲里我们搜索 light,可以看到有两个灯光。一个是 SkyLight,是各个方向的天光。还有一个 DirectionalLight,我们可以调整它的角度,看看效果。调整角度,我们可以看到打进窗户的投影形状和方向会有相应的变化。

图2 材质与灯光

3. Actor 组件

如图 3 所示,我们在场景中添加了一个架子和挡板。如果直接以拖拽到视图的方式添加,它们是各自独立的。都开启物理模拟后,效果可能会有些奇怪。

为了方便,我们可以把两者变成一个整体。我们可以把挡板拖拽到,架子的“细节”窗体里的 StaticMeshComponent 上。这样挡板就变成了架子的“子对象”,碰撞的时候就会被当成一个整体。

图3 Actor 组件

4. 碰撞网格

我们还在场景中垒了好几排桶。但是会有一些小问题:点击播放运行的时候,桶会有轻微的晃动,不太稳定。这是碰撞网格导致的。如图 4.1 所示,在视口中,我们选择“玩家碰撞”,可以看到碰撞网格的视图。之前桶的碰撞网格不太规则,我们需要进行修改。

图4.1 查看碰撞网格

我们找到桶的 Mesh 资产,然后进行双击。会进入如图 4.2 所示的编辑界面,我们首先点击 碰撞/移除碰撞,然后点击 碰撞/添加10DOP-Z简化碰撞,这样就能得到更加简化和规整的碰撞网格。

图4.2 设置碰撞网格

为了后续调整方便,我们可以把更改了碰撞网格的桶,转化成蓝图类。然后拖拽蓝图类到视图,垒成一排。