请选择 进入手机版 | 继续访问电脑版

查看: 2664|回复: 7

[技术] 3D游戏开发套件指南(入门篇)

[复制链接]

1092

主题

1778

帖子

2万

贡献

管理员

Rank: 9Rank: 9Rank: 9

积分
23200
QQ
发表于 2018-6-24 06:00:41 | 显示全部楼层 |阅读模式
我们已经为大家介绍过Unity Brighton的内容团队推出的2D游戏开发套件,今天我们将介绍最新的3D游戏开发套件。不论是使用2D还是3D游戏开发套件,都可以帮助开发者在不编写任何代码的情况下,通过设置与拖放便能快捷的实现游戏创意。

00.png


指南简介
本指南将引导开发者设置一个空的场景,使用3D游戏开发套件开始创建新的关卡。 这将帮助开发者了解如何使用游戏开发套件创建游戏。3D游戏开发套件中已经包含一个完整的游戏, 其中包含本开发套件中所有功能的相关示例。

你可以访问Asset Store资源商店下载3D游戏开发套件:
https://assetstore.unity.com/pac ... 48560049.1527241650

创建新场景
首先我们创建一个新场景。3D游戏开发套件中已含有一个工具可以自动创建一个新的默认场景,其中包含我们的英雄Ellen和移动、攻击所需要的元素以及地面元素。

点击Unity浏览器顶部菜单Go to Kit Tools (访问套件工具),选择Create New Scene(创建新场景)。
01.png


输入新场景名称。
02.png


点击创建,新创建的场景中,将包含:地面,Ellen、UI元素和游戏菜单。
03.png


点击编辑器顶部菜单Play(播放)按钮。
04.png


我们的玩家角色Ellen控制方式如下。
  • 移动:W, S, A, D
  • 跳跃:Space
  • 近战:左键单击
  • 摄像机控制:鼠标滑动
  • 暂停:ESC


05.png


添加移动平台
我们将为场景添加移动平台。所有可交互对象都能在项目的Prefabs > Interactables目录中找到。

添加MovingPlatform的步骤如下:

  • 找到项目窗口。打开Assets > 3DGameKit > Prefabs > Interactables。
  • 左键单击并拖拽MovingPlatform 对象到场景视图中。
    06.png
    07.png

  • 使用Transform工具来将平台平移(W)、旋转(E)和缩放(R)到合适的位置。
    08.png

  • 在编辑器顶部点击Play。



MovingPlatform 目前是静止的。我们要让它动起来:

  • 在场景视图中的MovingPlatform 上找到End Point(终点)工具
    09.png

    10.png


  • 查看检视窗口,找到Simple Translator 组件。
  • 使用Preview Position (预览位置)上的滑块来查看平台的移动位置。
    11.png

  • 在Simple Translator 组件,勾选Activate。
    12.png

  • 点击Play,MovingPlatform 将向上移动,并在到达设定路径顶端时停下。



我们要让这个平台来回移动,首先选中MovingPlatfrom :
  • 查看检视窗口,找到Simple Translator 脚本。
  • 将Loop Type (循环模式)设为Ping Pong(乒乓球模式)。

13.png


点击Play,MovingPlatform 会向上移动到顶部再向下移动。它会移动到任意被设定为End Point的位置。

使用指令开门
在3D游戏开发套件中,游戏指令(Game Commands)能发送信号给Unity中的其它对象,让它们执行动作。

在这里我们将使用压力板(Pressure Pad)来打开一扇门。首先添加门对象到场景中:在项目窗口中,打开Prefabs > Interactables。找到DoorSmall 并拖入场景视图中。
14.png


对象上会有很多辅助图示。我们可以通过调整让对象上只显示用于操作物体或者放置物体的Transform工具。

在层级窗口选中DoorSmall对象,查看检视窗口。点击Simple Translator组件上的箭头图标,折叠组件信息。

15.png

16.png

17.png


这样就只会显示对象的Transform工具,使用Transform工具来放置DoorSmall 对象。

现在我们添加压力板。在项目窗口中,打开Prefabs > Interactables。找到PressurePad 对象并点击拖入场景视图中。使用Transform工具将其放到门口附近。
18.png


现在将PressurePad和DoorSmall连接起来,从而在Ellen踩到压力板的时候,大门会打开。

在层级窗口点击选中PressurePad对象。
19.png


在层级窗口中,点击拖拽DoorSmall对象到PressurePad对象上Send on Trigger Enter 组件的Interactive Object(交互对象)属性栏中。
20.png


这时在场景视图中,会出现一个白色带箭头的线,显示PressurePad和DoorSmall之间的连接关系。
21.png


点击Play,当Ellen踩上压力板时,压力板会发光,下降并使门口打开。

敌人对象
在开发套件中,有三个预制敌人对象Chomper、Spitter和Grenadier。它们可以在Prefabs > Characters > Enemies > […..]目录下找到。
23.png


Chomper是个近战敌人;Spitter是远程敌人,能造成远距离伤害;Grenadier是Boss级敌人,有着特别的攻击模式,混合着远程伤害、近战伤害和盾形防御三种行动方式。

首先将Chomper放入场景中,与Ellen交战:在项目窗口中,打开Prefabs > Characters > Enemies > Chomper。将Chomper拖入场景视图中。使用Transform工具来移动Chomper的位置。
24.png


在Chomper前会出现一个大型深蓝色半圆,这是它的探测半径(Detection Radius)。当Ellen走入这个区域中时,Chomper会追逐并攻击Ellen。

现在我们减少Chomper的视野区域,在层级窗口中选中Chomper对象。在检视窗口中,找到Chomper Behaviour 组件。点击Player Scanner (玩家扫描器)旁的小箭头展开它。
25.png


将Detection Radius的数值设为3。
26.png


现在要让Chomper只能看到前方的物体:拖动Detection Angle(探测角度)滑块,将数值设为180。
27.png


现在Chomper只能看到它前方的物体,能看到的距离也更短了。
28.png


注意:如果想要从场景视图中移除这个辅助图示,折叠Chomper Behaviour 组件即可。

点击Play,让Ellen在Chomper附近奔跑。
29.png


Chomper会探测到Ellen,但只会原地跑动。我们要告诉Chomper它所能移动的地方,于是我们加入NavMesh Surface(寻路网格面)。

在层级窗口中点击Plane对象。
30.png


在检视窗口中,点击Add Component。搜索NavMeshSurface。
31.png


在脚本上点击键盘的回车键,添加组件到Plane对象上。找到NavMesh Surface组件。设置Agent Type(代理类型)为Chomper(这对所有敌人类型都适用)。设置Include Layers(包含图层 )为Nothing(无),选择Environment(环境),选择Vegetation(植被)。
32.png


在NavMesh Surface 组件底部,点击Bake(烘焙)。

这时会在地面上出现一个浅蓝色表面,它指明场景中的敌人所能移动的位置。

点击Play,移动到Chomper面前,Chomper现在会追着你并进行攻击,左键点击并使用道具进行攻击。
33.png


Chomper会在受到一次攻击后死亡。如果想要提高攻击次数:在层级窗口中,选中Chomper,在检视窗口找到Damageable组件。根据你想要Chomper死前所能承受的伤害,提高Max Hit Points(生命值上限)。Ellen的道具每次造成一点伤害。

造成对象伤害
我们可以使用接触伤害源(Contact Damager)组件来对拥有Damageable 组件的对象造成伤害。

在此使用一个箱子和Chomper进行演示:在项目窗口中,打开Prefabs > Interactables。找到DestructibleBox 预制件,点击拖入场景视图中。使用平移工具将箱子放在Chomper上方。

点击Play,箱子会下落到在Chomper上,然后呆在那里,什么都没发生。
34-1.png


注意:不要离Chomper太近,否则它会追逐Ellen。你可以降低它的探测半径为0。

34-2.png


我们想要箱子在砸到Chomper时造成伤害。在层级窗口中点击DestructibleBox 旁的箭头,展开其子对象。选中DestructibleBox子对象。
35.png


查看检视窗口移至检视窗口底部,点击Add Component。搜索Box Collider。
按下键盘上的回车键或是点击Box Collider组件将其添加到DestructibleBox对象上
在Box Collider组件上,勾选Is Trigger 属性。
36.png


点击Add Component,搜索Contact Damager(接触伤害源)。
点击键盘上的回车键或是点击Contact Damager脚本将其作为组件加入对象。
在Contact Damager组件上,将Amount(伤害量)设为3,要注意伤害量必须与Chomper的Max Hit Points数值相等,从而使Chomper受到足够的伤害。本例中我们设为3,请记得检查Chomper的Damageable 组件上的Max Hit Points。
设定Damaged Layers (伤害图层)为Enemy。
37.png


按下Play,箱子会落到Chomper上,Chomper会丢失生命值,然后转变为布娃娃(ragdoll)状态,而箱子则会弹开。
38.png


我们已经成功对Chomper造成足够伤害并击杀,但这个效果看起来不够好。我们可以让箱子在砸中Chomper时裂开。箱子上已经有接触伤害源,所以我们要对其进行调整使它也会影响箱子自身。

查看层级窗口,找到Chomper并选中。
查看检视窗口,点击Add Component ,搜索Contact Damager。
按下键盘上的回车键或点击脚本名,将其添加到Chomper上。
在Contact Damager组件上将Amount 设为1。
在Damaged Layer 属性下拉列表中选中Enemy。
39.png


按下Play箱子会砸到Chomper上,并在碰撞时破裂,让Chomper丢失所有生命值并转为布娃娃状态。
40.png


装饰
在开发套件中,我们提供了在构建示例游戏中所使用的所有环境对象,它们被分散到多个不同资源类型的文件夹中。请查看这些文件夹,开始构建出自己的场景,你可以在Prefabs > Environment > [….]目录下找到它们。

你会创建出怎样的世界呢?
40-1.png


我们需要为敌人对象重新烘焙NavMesh,使它们知道哪些是新增的可移动平面,或是让它们知道要避免哪些对象,例如:大型植物。

在层级窗口中选中Plane。,查看检视窗口,在NavMesh表面点击Bake。
41.png


石块和植被绘画器
为了进一步装扮场景,我们创建了一个石头绘画器和植被绘画器。这些工具能让你以多种大小和旋转方向放置植被和石块,并使它们与所放置的平面对齐。

如果要使用这些工具,在层级窗口找到VegetationPainter,点击小箭头来展开子对象。
42.png


点击GroundCover,将鼠标移到场景视图中的平面上,左键点击放置一些草被或睡莲。
43.png


你可以修改放置对象的类型,查看检视窗口在Instance Painter组件中,有绘画器中每个预制件的图片。
44.png


点击白色高亮方框,选中要绘制的预制件,被选中的预制件会变为灰色。

我们可以在Instance Painter组件顶部的方框中找到绘画器的操作说明,这里介绍一些简单操作:
  • 左键点击 = 绘图
  • Ctrl (Cmd) + 左键点击 = 删除
  • Alt + 滚轮 = 调整笔刷大小
  • 空格键 = 随机设置位置和旋转角度


我们绘制的任意对象会保存为子对象。例如:查看层级窗口,展开GroundCover。所绘制的类型对象都会保存其为子对象。我们可以点击它们来单独编辑和放置。
45.png


这个过程和绘制VegetationSmall、VegetationMedium和VegetationLarge的过程一致。
46.png


我们可以用同样的方法绘制石块,在层级窗口中找到RockPainter,点击小箭头展开子对象,点击RocksSmall,将鼠标移动到想要的位置并点击左键放置石块。
47.png


传送玩家
在3D游戏开发套件中,我们有一个传送系统。可以将Ellen传送到其它关卡,或是场景中的不同位置。

首先在场景中创建传送器,在项目窗口中,打开Prefabs > Structures找到GateWayHugeTeleporter。
  
从名字可以看出这个入口很大:
  • 使用缩放工具和平移工具定位并缩放这个对象为Ellen的大小。
  • 在层级窗口中展开GatewayHugeTeleporter ,暴露其子对象,选TeleportPlane。
  • 查看检视窗口,点击Add Component,搜索BoxCollider。
  • 按下键盘上的回车键或是点击BoxCollider 来添加组件到TeleportPlane对象上。
  • 在Box Collider 组件上勾选Is Trigger。
    48.png

  • 点击Add Component,搜索Teleporter。
  • 按下回车键或是点击Teleporter脚本来将其添加到TeleportPlane对象上。
    49.png

  • 在Teleporter 组件上,将Layer(图层)改为Player(玩家)。
  • 在层级窗口上,找到Checkpoints对象。
  • 点击Checkpoint 对象旁边的箭头展开其子对象。
    50.png

  • 在层级窗口选中TeleporterPlane 。
  • 将子对象Checkpoint对象拖入Teleporter 组件的Destination Transform属性栏。
  • 在层级窗口找到并展开Ellen,显示其子对象,找到RespawnParticles对象。
    51.png

  • 在层级窗口上选中GateWayHugeTeleporter 。
  • 将RespawnParticles 拖到Teleporter组件的Enter Effect(进入特效)属性栏中。
  • 将RespawnParticles 拖到Teleporter组件的Exit Effect (离开特效)属性栏中。
  • 按下Play并测试,让Ellen跑到传送器中。


52.png


在通过传送器时,Ellen会传送到最初的出生点,并会出现蓝色的粒子包围着她。

小结
在3D游戏开发套件中的多数对象会使用类似压力板功能的事件系统。我们可以探索Scenes > GamePlay 中的已有场景,了解其它对象在第一关和第二关是如何使用指令系统设置的。

今天的3D游戏开发套件指南入门篇就为大家介绍到这里,后续我们会分享相关套件的进阶开发篇,尽请期待,希望开发者能使用游戏开发套件尽情享受游戏设计的快乐! 更多精彩Unity教程尽在Unity官方中文论坛(Unitychina.cn)!

1

主题

66

帖子

785

贡献

中级UU族—1级

Rank: 4

积分
785
发表于 2018-6-24 14:14:30 | 显示全部楼层
占楼收藏
GitHub:https://github.com/MasterWangdaoyo

0

主题

5

帖子

70

贡献

初级UU族—2级

Rank: 2

积分
70
发表于 2018-7-2 03:52:41 | 显示全部楼层
回复 收藏   回复 收藏  

0

主题

2

帖子

75

贡献

初级UU族—2级

Rank: 2

积分
75
发表于 2018-7-10 07:46:27 | 显示全部楼层
本帖最后由 TigerY2017 于 2018-7-10 07:52 编辑

3DGameKit运行起来很卡,已经 player 里设置为 320x240,并且 Game 窗口里也是 4:3 模式或 Standalone(320x240) 运行。卡到退出游戏都得响应很久菜单才出来或鼠标才挪出来。开发机配置 MacBook Pro (13-inch, 2016, Four Thunderbolt 3 Ports),3.3 GHz Intel Core i7,内存16G 2133 Mhz lpddr3。
还需要什么设置可以改善乜?还是只能换电脑?谢谢!

0

主题

2

帖子

75

贡献

初级UU族—2级

Rank: 2

积分
75
发表于 2018-7-10 14:20:38 | 显示全部楼层
换我的老 iMac pro 好些了,虽然还卡,但可以用

0

主题

1

帖子

25

贡献

初级UU族—1级

Rank: 1

积分
25
发表于 2018-7-14 07:17:19 | 显示全部楼层
了解一下

1

主题

66

帖子

785

贡献

中级UU族—1级

Rank: 4

积分
785
发表于 2018-7-14 07:46:14 | 显示全部楼层
TigerY2017 发表于 2018-7-10 07:46
3DGameKit运行起来很卡,已经 player 里设置为 320x240,并且 Game 窗口里也是 4:3 模式或 Standalone(320x ...

我用8核,和主流的1060显卡都卡
场景效果全开下试试刷草卡死````````
GitHub:https://github.com/MasterWangdaoyo

1

主题

66

帖子

785

贡献

中级UU族—1级

Rank: 4

积分
785
发表于 2018-7-14 07:47:41 | 显示全部楼层
TigerY2017 发表于 2018-7-10 07:46
3DGameKit运行起来很卡,已经 player 里设置为 320x240,并且 Game 窗口里也是 4:3 模式或 Standalone(320x ...

还是坐等 angrybots
GitHub:https://github.com/MasterWangdaoyo
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表