游戏原型系列 vol.15 3D游戏套件演练 part1
摘要
相比前一节这是一节更加深入的教程,将引导您从使用ProBuilder和PolyBrush建立关卡到使用3D游戏套件中提供的所有交互式功能和布景功能。大多数教程步骤都可以用作独立的演练,但请参考整个相关的教程以获取更深入的了解。
如果您想快速起步,请参阅游戏原型系列vol.14期的《快速入门指南》,因为它包含的教程和示例更小。首先,请按照《快速入门指南》第2步中的说明制作一个新场景。
1.演练简介
本节将引导您从使用ProBuilder和PolyBrush建立关卡到使用3D游戏包中的所有可交互功能和布景功能。
大多数教程都可以用作独立的演练,但请参考整个相关的教程以获取更深入的了解。
2.使用ProBuilder编辑
您的新场景已经有了Ellen可以在其上奔跑的一角-让我们现在来看一下:
导航到“ Hierarchy(层次结构)” 窗口
选择名为Plane 的GameObject

该平面是使用ProBuilder 创建的,该工具使您可以在Unity中创建和编辑3D对象。由于场景中有ProBuilder网格,因此ProBuilder 窗口已打开。

如果未打开,则可以从顶部菜单中打开它;否则,请打开它。
单击工具> ProBuilder > ProBuilder窗口

Greyboxing(灰盒)
灰盒技术是在场景中创建简单的形状或几何图形以概述和计划您要制作的关卡的艺术。在游戏开发中,这是关卡设计的早期阶段,您可以在其中快速制作原型并尝试想法。ProBuilder 是灰盒的绝佳工具,因此让我们在场景中创建一个新形状:
转到ProBuilder窗口
单击“ New Shape(新形状)”旁边的“ +”号

这还将打开“ Shape Tool(形状工具)” 窗口。

该Shape Selector(形状选择)下拉菜单,您可以创建许多不同的形状。

现在,我们将创建一个Cube,这是默认形状:
选择Cube(立方体)
将尺寸设置为3、3、3
单击构建Cube

现在,您已经在场景中间构建了一个cube。由于我们的平面比立方体的中心高一点,因此它将与平面相交。

您可以使用“ 移动工具” 移动Cube。单击场景视图中的任何箭头,将其移至所需位置。
您可以使用ProBuilder中的多个工具来更改立方体的形状。要了解有关使用ProBuilder 在Unity内部创建3D模型的更多信息,请查看ProBuilder101教程和文档。
现在,让我们删除此Cube:
在“ 层次结构” 窗口中选择Cube
按键盘上的Delete键(在Mac 上为Cmd + Backspace)

接下来,我们将继续编辑和绘制地平面。
3.建立一个酸池
PolyBrush
地面由ProBuilder 平面组成。这些通常是平坦的,但是通过使用PolyBrush,我们可以创建不平坦的表面并绘制纹理以使此Mesh 类似于地面。我们将在地面上浸入水中,在其中可以添加酸液,这对Ellen构成危害。
网格:网格由排列在3D空间中的三角形组成,以创建实体对象的印象。三角形由其三个角点或顶点定义。
注意:PolyBrush当前处于Beta版,因此使用此工具可能会遇到一些错误。
我们可以通过缩放它来使平面变得更大一些:
在层次结构中选择Plane(平面)
导航到检查器
将X轴上的比例设置为2
保持Y轴的比例为1
将Z轴的比例设置为2

让我们打开PolyBrush 窗口并开始编辑:
转到工具> PolyBrush > PolyBush窗口


注意:PolyBrush当前处于Beta版,因此布局可能会更改。
选择Plane;
在PolyBrush窗口中单击“Push/Pull”图标

选择平面,然后将其悬停在“场景视图”中
无论您将鼠标移到哪里,“Push/Pull”小控件都将出现。

左键单击以通过向上拖动顶点来升高地面
或按住Ctrl并单击鼠标左键以通过向下压顶点降低地面
现在您已经知道了基本知识,使用Ctrl +左键单击在平面上创建一个小倾斜角开始形成一个池。这不需要太深。
完成编辑后,再次单击“Push/Pull”图标以取消选择工具。

您应该具有类似以下内容。

有关PolyBrush及其使用方法的更多信息,请访问教程和文档。
目前,让我们继续制造第一个危险。
添加酸池
要找到Acid,我们需要导航到Project窗口。这是所有预制件和工具的存储位置:
转到Assets> 3D GameKit > Prefabs(预制件)>Interactables(可交互对象)
左键单击并将“ Acid Prefab”拖动到层次结构中
酸池将出现在场景中的某处。在Unity中,可以通过“框架选择”快速找到对象:
在层次结构中选择Acid
将鼠标悬停在“场景”视图中
在键盘上按F
这将在“场景”视图中找到并构图“Acid”。

目前,酸池太大,因此我们将其缩小一点:
选择“Acid”后,按“键盘”上的“缩放”工具
单击并拖动中间的白色框以使酸变小

酸池也处于错误的位置。使用“移动工具”(选择“Acid”并按W)将“Acid”放置在平面下方,使其略微窥视池所在的位置。

您可以继续定位和缩放“Acid”,直到获得所需的结果。
提示:酸池只需要大于池中的空间即可。
按“播放”并测试您的场景,以检查您冒泡的酸池。

注意:通过3DGamekit 工具栏菜单创建新场景时,它将添加一个默认的DeathVolume 区域,该区域的大小非常大,以允许您有足够的编辑空间。降低低于此的地形时要小心,因为艾伦会在进入时死亡。

顶视图-默认关卡的Death Volume

侧视图-默认级别Death Volume
增加死亡体
目前,埃伦(Ellen)可以在酸浴中而不会受伤,这没有太大危害。

为了使酸池能够杀死艾伦(对不起艾伦),当她走进时:
在层次结构中选择Acid
在检查器中,单击“ 添加组件”。
在搜索框中输入“death”
选择Death Volume脚本

这会将“Death Volume”脚本添加到“Acid”中。这是我们制作的脚本,用于指示游戏使Ellen失去所有血量。

按播放并测试您的关卡。尝试进入酸池,艾伦会死掉,并在不久后重生。
4.使用Polybrush进行顶点着色
PolyBrush提供了一个非常有用的3D美工功能,称为“ 顶点着色” ,该功能使您可以在顶点(连接在一起以构成曲面的点)上绘制,而不是直接在GameObject的表面上绘制。
类似于使用“Push/Pull”功能创建“酸池”和“死亡体积”,绘画将使用顶点在整个表面上绘画。屏幕截图中突出显示了顶点,线条表示它们之间的多边形边。

刚开始时这可能很奇怪,因为您可能希望能够直接在表面上进行绘制,而使用顶点绘制时,它需要沿着表面边缘将顶点和最近的顶点“融合”在它们之间的颜色/纹理。
这是由材质处理的,这些材质利用着色器(脚本)将纹理(位图图像)分组并在GameObject上进行渲染。有关这些主题的详细说明,请转到手册的“ 材质,明暗器和纹理”页面。
为了说明这一点,让我们直接开始绘画!
绘画与材质
使用工具包更早地创建场景时,已经在平面上创建了着色器材质。在以下步骤中,您将看到它是如何创建的,并深入研究了组成视觉样式和材质的元素。
让我们从设置基本平面并附加材质开始。
除非已经打开,否则从工具> ProBuilder> ProBuilder窗口打开ProBuilder。

从ProBuilder窗口中选择“新形状”

在“Shape Selector(形状)”窗口中,从下拉列表中选择“Plane(平面)”

这将在附加了一些默认值的场景视图中添加一个平面,将其放置在先前创建的默认平面旁边。要看起来像演示中的那个,在ProBuilder窗口中将Plane值设置为:
宽:20
高:20
宽度段:10
高度段:10

在检查器视图中设置以下内容
位置:X:-30 Y:0 Z:-10
这应该将平面放置在关卡中生成的现有平面之外,如果不能使用这些值完美对齐,请根据需要进行调整。

返回到“ 形状”工具窗口,然后单击“ Build Plane(构建平面)”
查看Inspector,您可以看到当前连接的着色器只是Standard Vertex Color ,它将显示为灰色。

要更改此设置,您可以添加已在3D Gamekit中创建的材质。要找到这些内容,您可以使用有用的“Search by Type(按类型搜索)” 按钮

在项目视图中,从显示的下拉菜单中选择材质。

这将更新“ 项目” 视图以显示项目中的所有材质。

在3D Gamekit中,附加到主平面的默认材质为Default_Ground_Mat,让我们进一步过滤结果。
在搜索字段中的t:Material文本旁边键入default_ground_mat。

将Default_Ground_Mat.mat 从“项目”视图拖放到“场景视图”中的“平面”上,以向其中添加材质。

注意,在检查器中,材质现已更新为Default_Ground_Mat

现在,您可以使用该材质在平面上绘画。
转到Tools> Polybrush> Polybrush窗口

选择“ Polybrush” 窗口顶部的“ Paint Vertex Colors(绘制顶点颜色)” 选项卡

注意,如何在平面表面上平铺纹理,左侧为默认图案,右侧为顶点绘制版本。

要查看当前映射的纹理,请在“ 项目” 视图中转到“ Assets”>“ 3DGamekit”>“Art”>“Texture”>“Environment”>“Ground” 。
提示:但是,要更快地导航到那里,可以使用Default_Ground_Mat Shader,单击“材质”预览旁边的箭头并选择一种纹理,这两种方法都将带您到“项目”视图中的正确文件夹。

要开始绘制新平面,请从“ Polybrush” 窗口中选择“ Red” 颜料以设置“ Brush Color(画笔颜色)”。

这将允许您使用映射的纹理进行绘制,在这种情况下,可以使用Moss_Albedo 纹理在顶点上进行绘制。
通过在场景视图中使用画笔小控件,将其移至平面上的顶点,您可以在编辑器中实时看到纹理混合,以使其永久化,只需单击即可。

如果要添加一些MuddyGround 纹理开关“ 画笔颜色” 为蓝色和具有SmallStone 纹理的MuddyGround ,则在“ 调色板” 中将“ 画笔颜色” 切换为绿色。这会给您表面上的多种变化。

现在该轮到您发挥画笔的创意了!结合使用“Push/Pull”,调整笔刷大小和“笔刷着色”纹理,您可以创建各种已绘制的网格物体。
提示:要尝试不同的颜色,可以在编辑器中实时预览它们,以查看3D Gamekit中应用的不同纹理和混合。
从对象中删除ProBuilder脚本
在场景中使用ProBuilder创建的对象时,最好在完成编辑后删除Probuilder脚本,以防止游戏中不必要的开销。它从场景中单独选择的对象或所有ProBuilder对象中删除脚本。
单击工具> ProBuilder>操作,然后选择全部删除或仅从单独选择的对象中删除。

该动作是永久性的,因此请确保在进行此操作之前已对网格和顶点绘制进行了所有必要的更改,编辑器会在完成该动作之前向您发出警告。
5.使用环境预制件
我们为您构建了“关卡形体”,可以放置在您想要的位置。这些可以在Prefabs > Environment中找到。

例如,让我们将一个岩石模型拖到场景中:
在“ 项目” 窗口中,转到“ 预制件” >“ 环境” >“ Rock(岩石)”
单击CliffBig01
在检查器底部的“ 预览窗口”中预览此模型

左键单击并在“预览窗口”中拖动模型以旋转模型并从不同角度查看模型。
提示:如果看不到此窗口,请单击检查器底部的灰色栏,然后将鼠标向上拖动。
性能说明
在旋转模型时,您会看到模型的某些部分丢失了。这是正常现象,因为很多几何图形都缺少背面。这样可以使较大的场景表现更好,并阻止它们降低计算机的速度。

添加到场景中的几何图形和特效越多,计算机需要处理的内容就越多。在某些机器上,这可能是大量的几何图形和效果,而在其他机器上,它可能很小。建立关卡时请记住这一点,如果按Play时计算机开始变慢,则可能需要删除一些几何体。
我们使用了类似上述的一些技术,以使您能够尽可能多地构建。该项目将自动检测计算机的硬件,并确定您可以看到多少几何形状和效果以及它们的详细程度,类似于PC游戏如何根据计算机更改设置。如果您需要重置这些设置或它们不会自动设置,请转到“ Kit Tools(工具包工具)”>“Auto Detect Quality Settings(自动检测质量设置)” 。

如果要手动更改这些设置,然后查看设置明细,请转到Edit(编辑)>Project Settings(项目设置)>Quality(品质)。这将打开检查器中的信息,供您根据需要进行调整。
LOD(细节级别)Level of Detail
我们用来提高性能的另一种技术是使用LOD组。LOD 代表“详细程度” 。当物体远离相机时,将显示低细节网格,并且不会注意到差异。这是因为具有更简单几何形状的网格对硬件的要求较低。
让我们以CliffBig01 为例。
将CliffBig01 拖到“场景”视图中
在“ 层次结构”中,单击CliffBig01 旁边的箭头以显示其子级。

单击每个子项,并在场景视图中观看它们的变化;

在这里,我们可以看到细节的变化,我们将每个网格设置为在距相机不同距离处显示。
单击CliffBig01 旁边的箭头将其折叠
确保选中了CliffBig01
在检查器中,查看“ LOD组”组件

在这里,您可以看到将在距相机多少距离处显示哪些模型。您无需更改这些设置,因为我们已经为您设置了所有设置。LOD组距离会根据为您自动选择的质量设置而有所不同。
有关LOD组的更多信息,请参阅LOD相关的文档
6.岩石和植被画家
为了进一步完善您的场景,我们创建了Rock Painter和Vegetation Painter。这些工具可让您放置具有不同大小和旋转度的植被和岩石,同时使其与您要绘画的表面对齐。
使用这些工具;
在层次结构中,找到VegetationPainter
单击箭头展开其子级

点击GroundCover
将鼠标悬停在“ 场景视图”中的地面上
左键单击以在您需要的地方放置一些草垫。

您可以更改要执行此操作的对象的类型。
导航到检查器
在“ Instance Painter” 组件中,Painter中有每个预制件的数个图片。

所选的预制件将为灰色
单击突出显示的白色框,以选择要使用的预制件。
画家的控件可以在“ Instance Painter” 组件的顶部找到,以下是一些入门的控件:
左键单击:喷涂
Ctrl(Cmd)+左键单击:删除
Alt +滚动:增加画笔大小
空格键:随机分配位置和旋转
您在其上绘画的任何对象都将被存储为“父集的子集”。例如;
导航到层次结构
展开GroundCover

涂装中该类型的每个对象都将作为子集存储在这里。您也可以单击它们以单独编辑和放置它们。
涂装小植被,中植被和大型植被的过程相同

绘画岩石的方法相同。
在层次结构中找到RockPainter
单击箭头展开其子级
点击RocksSmall
将鼠标悬停在所需区域上以放置岩石,然后单击以放置。

这些工具可帮助您快速绘制关卡。可以找到这些文件并将其放置在从Prefabs文件夹中拖入预制件的传统方式中。
转到项目窗口
转到Assets> 3DGameKit > Prefabs> Environment
在这里,您可以找到Rocks ,VegetationSmall ,VegetationMedium ,VegetationLarge的文件夹。

您可以单击任意一个并将其拖动到“ 场景视图”中,以将其放置在关卡中。请注意,以这种方式拖动对象时,位置,旋转度和大小不会随机化。
继续在场景中放置对象。别忘了偶尔按一下Play 来测试游戏关卡,看看游戏中的情况如何。
在以下各节中,我们创建了一个小型环境来向您展示游戏机制。祝你玩得开心,并在您的关卡建设中发挥创意!

