游戏原型系列 vol.14 3D Game Kit快速开始
摘要
3DGameKit(3D游戏套件)。这是官方出品的一套游戏原型模版,无需编写任何代码即可连接游戏的机制,工具,系统和资产的集合。这套工具功能十分丰富,使用它可以方便快速的制作出一款动作冒险类游戏。
1.快速入门指南简介
本教程将引导您逐步完成在3D游戏套件中设置空白场景的操作,以开始创建新关卡。这将引导您了解该工具包中用于创建游戏玩法的一些基础知识。该套件随附一个预制游戏,其中包含您在使用创意时会遇到的使用套件各个部分的示例。这套工具可以在Unity的AssetStore进行下载。

2.制作新场景
让我们从创建一个新场景开始。我们已经制作了一个工具,可以创建一个场景,其中包含您需要一点地面的一切,而我们的英雄艾伦(Ellen)可以四处奔跑和进攻。
转到Kit Tools(工具包工具)> New Scene Name(创建新场景)

在“ New Scene Name(新场景名称)”中,输入场景的名称。

点击Create(创建)
您的新场景将显示地面,Ellen,一些UI和游戏菜单。

在编辑器顶部,按Play

Ellen(我们的玩家角色)的控件如下:
移动 W,S,A,D
跳跃 空格键
攻击 鼠标左击
相机控制 鼠标
暂停 ESC

3.在3D游戏套件中添加移动平台
我们将在场景中添加一个移动平台。所有可交互对象都在Prefabs> Interactables(交互对象)中
要添加MovingPlatform:
导航到“ 项目”窗口
转到资产> 3DGameKit > 预制件>Interactables(可交互对象)
左键单击并将MovingPlatform 拖动到场景视图中


使用变换工具在所需的平台上进行平移(W ),旋转(E)和缩放(R)。

在编辑器顶部,按Play
该MovingPlatform 将是静止的。让我们动起来:
在“ 场景”视图中的MovingPlatform 上找到End Point(端点工具)


导航到检查器
在Simple Translator组件中
使用“ Preview Position(预览位置)” 滑块查看平台的去向

在“ Simple Translator” 组件中,选中“ Active(激活)” 框

按播放
您的MovingPlatform 将向上移动,并在到达您设置的路径的顶部时停止。
让我们来回移动,选择“ MovingPlatfrom” :
导航到检查器
在Simple Translator脚本中
将Loop Type(循环类型)设置为PingPong(乒乓)

按播放
现在,MovingPlatform 将移至顶部,然后再次返回。该MovingPlatfrom 会去你设置为任意位置终点。
4.用命令打开一扇门
在3D游戏工具箱中,游戏命令向Unity中的其他对象发送信号,告诉他们执行操作。
我们将使用压力垫打开门。让我们为场景添加一扇门:
在“ 项目”窗口中,转到“ Prefabs(预制件)” >“Interactables(可交互对象)”
查找DoorSmall 并将其拖动到“ Scene View(场景视图)”中

该对象上的Gizmos可能是压倒性的。可以调整它们以仅显示用于对象或易于放置的“Transform(变换)”工具:
随着DoorSmall 在层次结构,导航到Inspector选择。
单击“ Simple Translator” 组件上的箭头以将其折叠



现在仅显示对象的“变换”工具。
使用所需的变形工具将DoorSmall 定位。
让我们添加一个压力垫:
在“ 项目”窗口中,转到“ 预制件” >“可交互对象”
找到PressurePad ,然后单击并将其拖动到“ 场景视图”中
使用Transform Tools(变形工具)并将其放置在门附近

现在,让我们连接PressurePad(压垫) 和DoorSmall,以便当Ellen 踩在压垫上时,门即可打开。
在层次结构中,单击PressurePad 将其选中

在层次结构中,单击DoorSmall 并将其拖到PressurePad 上“Send on Trigger Enter(触发时发送输入)” 组件中的“ Interactive(交互式对象)” 插槽中。

在“ 场景视图”中,应该有一条白色箭头线,显示从PressurePad 到DoorSmall 的连接。

按播放键
当Ellen踩到压力垫时,压力垫将发亮,下降并使门打开。

5. 3D游戏套件中的敌人
3D游戏套件中有3个预制敌人。可以在“ Prefabs(预制件)” >“ Characgers(角色)” >“ Enemies(敌人)” >“ [.....]”中找到
敌人是“Chomper”,“Spitter”和“Grenadier(掷弹兵)”。Chomper是近距离近战敌人,Spitter是远程射程敌人,而掷弹兵是具有特定攻击模式,混合射弹,近战和盾牌爆破防御的首领型敌人。

让我们在场景中放置一个Chomper以便Ellen战斗:
在“ 项目”窗口中,转到“ 预制件” >“ 角色” >“ 敌人” >“ Chomper”
将Chomper 拖到“ 场景视图”中
使用“ 变换工具” 将Chomper放置在所需的位置

在Chomper的前面会出现一个深蓝色的大半圆,这是他的Detection Radius(侦测半径)。当艾伦(Ellen)进入该区域时,他将追赶并攻击她。
在“ 层次结构”中选择“ Chomper”后,让我们减小他可以看到的区域。
在检查器中,导航到“ Chomper Behavior” 组件
通过单击旁边的箭头展开“ Player Scanner(玩家扫描器)”

在“ 检测半径”中,将该值设置为3

让我们也使Chomper仅能从前面看到:
将检测角度滑块滑到180

现在,Chomper只能看到更近距离的物体。

注意:要从“ 场景视图”中删除此Gizmo ,请折叠“ Chomper Behavior” 组件。
按Play 并在Chomper 附近运行

Chomper会检测到Ellen,但只能当场运行。我们需要告诉Chomper他可以在地面上移动的位置,我们通过添加NavMesh Surface来做到这一点。
在层次结构中,单击Plane(平面)

在检查器中,转到“ 添加组件”
搜索NavMeshSurface

在键盘上按Enter键或单击脚本以将组件添加到Plane
导航到“ Nav Mesh Surface” 组件
将“ Agent Type” 设置为“ Chomper” (用于所有敌人类型)
将“ Include Layers(包括层)” 设置为“无”
现在在“ Include Layers”上,选择“ Environment(环境)”
在“ 包括层”上,选择“ Vegetation(植被)”

在“ 导航网格表面” 组件的底部,单击“ 烘焙”。
浅蓝色表面将出现在地面移动平台的顶部。这可以告诉您放置在场景中的任何敌人他们可以行走。
按Play 并在Chomper 前面运行
现在,Chomper将在您攻击后开始运行!
使用鼠标左键用你的法杖攻击!

一击,Chomper就会死亡。要增加这个:
在层次结构中,选择“ Chomper”
在检查器中,导航到“ Damageable(损伤组件)”
将“ Max Hit Points(最大生命值)” 增加到您希望Chomper 死前要承受的命中次数。艾伦的员工获得1点生命值

6.3D游戏套件中的物体的伤害
我们可以使用Contact Damager(接触式伤害器)对具有Damageable(可伤害)组件的对象造成伤害。
我们可以使用盒子和切碎机演示其工作原理
在“ 项目”窗口中,转到“ 预制件” >“可交互对象”
找到DestructibleBox Prefab,然后单击并将其拖到“ 场景视图”中
使用Translate Tool将框放置在Chomper 上方
█将其高高放置,以便您有时间在测试中查看它

按播放
盒子会掉落并落在Chomper上,并停留在那儿,什么也没发生。
注意:不要离Chomper太近,否则他会追赶Ellen。如果愿意,您始终可以将其检测半径减小为0。

我们需要盒子在碰到Chomper时造成损坏
在层次结构中,单击DestructibleBox 旁边的箭头以显示其子级
选择DestructibleBox 子级

导航到检查器
滚动到检查器的底部,然后单击“ 添加组件”
搜索Box Collider(盒碰撞体)
点击键盘上Enter(回车)或点击Box Collider组件,将其添加到DestructibleBox
在Box Collider 组件上,勾选Is Trigger 框

单击添加组件
搜索Contact Damager
点击键盘上Enter(回车)或点击Contact Damager脚本将其添加为一个组件
在“ Contact Damage组件”中,将“ Amount(数量)” 设置为3
█请注意,损坏金额必须等于您为Chomper设置的Max Hit Points(最大生命值),以便他获得全部损伤数。我们在项目中将其更改为3,确保您检查了Chomper的Damageable组件的Max Hit Points
将Damaged Layers设置为Enemy(敌人)

按播放

盒子会落在Chomper上,失去生命,变成布娃娃状态,盒子会弹开。我们已经成功造成足够的伤害以杀死Chomper,但是这种效果看起来并不理想。当碰到Chomper时,我们可以打破框框。它已经有一个接触破坏者,所以让我们对其进行调整以影响包装盒。
在层次结构中
查找Chomper 并选择它
导航到检查器
滚动到检查器底部
单击添加组件,然后搜索Contact Damager
点击键盘上Enter或点击脚本将它添加到Chomper
在Contact Damager组件中
将Amount设置为1
在Damaged Layers下拉列表中选择Enemy

按播放
盒子会掉落在Chomper上,撞击会破裂,并使Chomper 失去所有HP和布娃娃。

7.在3D游戏套件中进行装饰
在游戏工具包中,我们提供了用于构建示例游戏的所有环境对象。
您可以在Prefabs > Environment > […。]中找到这些。
它们被分为不同资产类型的文件夹。浏览文件夹并开始构建场景。
您可以创造什么世界?

注意:您将需要重新烘焙NavMesh,以使敌人知道添加的新表面是可行走的,或者他们需要避开物体(例如大植物)。
在层次结构中,选择Plane
导航到检查器
在NavMesh 曲面中,单击“ Bake(烘焙)”。

Rock and Vegetation Painter(岩石和植被画家)
为了进一步完善您的场景,我们创建了Rock Painter和Vegetation Painter。这些工具可让您放置具有不同大小和旋转度的植被和岩石,同时使其与您要绘画的表面对齐。
要使用这些工具:
在层次结构中,找到VegetationPainter
单击向下箭头以展开其子级

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

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

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

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

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

8.用3D游戏套件传送玩家
游戏套件中有一个隐形传送系统。您可以将艾伦传送到其他级别或场景中的其他地方。
让我们在场景中创建一个传送器:
在“ 项目”窗口中,转到“ 预制件” >“ 环境” >“ Structures(结构)”
查找GateWayHugeTeleporter
将GateWayHugeTeleporter 拖到场景中
顾名思义,大门非常庞大:
使用“ Scale Tool(缩放工具)” 和“ Translate Tools(平移工具)” 将其定位并缩放为埃伦的大小
在层次结构中,展开GatewayHugeTeleporter 以展开其子级
选择TeleportPlane(转送平台)
导航到检查器
单击添加组件
搜索BoxCollider
点击键盘的回车或点击BoxCollider 将组件添加到TeleportPlane
在Box Collider 组件上,勾选Is Trigger(触发)

单击添加组件
搜索Teleporter(传送器)
在键盘上按Enter,或单击Teleporter 脚本将其添加到TeleportPlane

在传送器组件中
将Layer更改为Player
在层次结构中,找到检查点
单击Checkpoint 旁边的箭头以展开其子级

随着TeleporterPlane 在选定的层次
将Checkpoint (子项)拖到Teleporter 组件的Destination Transform 字段中
在Hiearchy中查找并扩展Ellen 以显示其子级
查找RespawnParticles

随着TeleportPlane 在选定的Hierarchy(层次)
拖动RespawnParticles 到Enter Effect(输入效果 )的Teleporter(传送器)
将RespawnParticles 拖动到Teleporter 上的Exit Effect(退出效果)中
按播放并通过运行传送器进行测试

当穿越传送器时,艾伦会传送到她最初出现的位置,蓝色粒子将包围她。
9.玩3D游戏套件
套件中的大多数对象都可以在“Pressure Pad(压力垫设置)”中看到的“Events system(事件系统)”下播放。
在“ 场景” >“ 游戏”中浏览现有场景,以了解如何使用关卡1和关卡2中的命令系统设置其他对象。
有关所有组件及其参数的详细信息,请参见组件文档。
愿你能享受到关卡设计的乐趣!