我们的玩家角色Ellen控制方式如下。
移动:W, S, A, D
跳跃:Space
近战:左键单击
摄像机控制:鼠标滑动
暂停:ESC
添加移动平台
我们将为场景添加移动平台。所有可交互对象都能在项目的Prefabs > Interactables目录中找到。
添加MovingPlatform的步骤如下:
-
找到项目窗口,打开Assets > 3DGameKit > Prefabs > Interactables。
-
左键单击并拖拽MovingPlatform 对象到场景视图中。
- 使用Transform工具来将平台平移(W)、旋转(E)和缩放(R)到合适的位置。
- 在编辑器顶部点击Play。
MovingPlatform 目前是静止的。我们要让它动起来:
- 在场景视图中的MovingPlatform 上找到End Point(终点)工具。
-
查看检视窗口。
-
找到Simple Translator 组件。
-
使用Preview Position (预览位置)上的滑块来查看平台的移动位置。
- 在Simple Translator 组件,勾选Activate。
点击Play,MovingPlatform 将向上移动,并在到达设定路径顶端时停下。
我们要让这个平台来回移动,首先选中MovingPlatfrom :
-
查看检视窗口,找到Simple Translator 脚本。
-
将Loop Type(循环模式)设为Ping Pong(乒乓球模式)。
点击Play,MovingPlatform 会向上移动到顶部再向下移动。它会移动到任意被设定为End Point的位置。
使用指令开门
在3D游戏开发套件中,游戏指令(Game Commands)能发送信号给Unity中的其它对象,让它们执行动作。
在这里我们将使用压力板(Pressure Pad)来打开一扇门。首先添加门对象到场景中:
-
在项目窗口中,打开Prefabs > Interactables。
-
找到DoorSmall 并拖入场景视图中。
对象上会有很多辅助图示。我们可以通过调整让对象上只显示用于操作物体或者放置物体的Transform工具。
-
在层级窗口选中DoorSmall对象,查看检视窗口。
-
点击Simple Translator组件上的箭头图标,折叠组件信息。
这样就只会显示对象的Transform工具,使用Transform工具来放置DoorSmall 对象。
现在我们添加压力板:
-
在项目窗口中,打开Prefabs > Interactables。
-
找到PressurePad 对象并点击拖入场景视图中。
-
使用Transform工具将其放到门口附近。
现在将PressurePad和DoorSmall连接起来,从而在Ellen踩到压力板的时候,大门会打开。
- 在层级窗口点击选中PressurePad对象。
- 在层级窗口中,点击拖拽DoorSmall对象到PressurePad对象上Send on Trigger Enter 组件的Interactive Object(交互对象)属性栏中。
这时在场景视图中,会出现一个白色带箭头的线,显示PressurePad和DoorSmall之间的连接关系。
点击Play,当Ellen踩上压力板时,压力板会发光,下降并使门口打开。
敌人对象
在开发套件中,有三个预制敌人对象Chomper、Spitter和Grenadier。它们可以在Prefabs > Characters > Enemies > [……]目录下找到。
Chomper是个近战敌人;Spitter是远程敌人,能造成远距离伤害;Grenadier是Boss级敌人,有着特别的攻击模式,混合着远程伤害、近战伤害和盾形防御三种行动方式。
首先将Chomper放入场景中,与Ellen交战:
-
在项目窗口中,打开Prefabs > Characters > Enemies > Chomper。
-
将Chomper拖入场景视图中。
-
使用Transform工具来移动Chomper的位置。
在Chomper前会出现一个大型深蓝色半圆,这是它的探测半径(Detection Radius)。当Ellen走入这个区域中时,Chomper会追逐并攻击Ellen。
现在我们减少Chomper的视野区域,在层级窗口中选中Chomper对象。
-
在检视窗口中,找到Chomper Behaviour 组件。
-
点击Player Scanner (玩家扫描器)旁的小箭头展开它。
- 将Detection Radius的数值设为3。
现在要让Chomper只能看到前方的物体:
- 拖动Detection Angle(探测角度)滑块,将数值设为180。
现在Chomper只能看到它前方的物体,能看到的距离也更短了。
注意:如果想要从场景视图中移除这个辅助图示,折叠Chomper Behaviour 组件即可。
- 点击Play,让Ellen在Chomper附近奔跑。
Chomper会探测到Ellen,但只会原地跑动。我们要告诉Chomper它所能移动的地方,于是我们加入NavMesh Surface(寻路网格面)。
- 在层级窗口中点击Plane对象。
- 在检视窗口中,点击Add Component,搜索NavMeshSurface。
-
在脚本上点击键盘的回车键,添加组件到Plane对象上。
-
找到NavMesh Surface组件,设置Agent Type(代理类型)为Chomper(这对所有敌人类型都适用)。
-
设置Include Layers(包含图层 )为Nothing(无),选择Environment(环境),选择Vegetation(植被)。
- 在NavMesh Surface 组件底部,点击Bake(烘焙)。
这时会在地面上出现一个浅蓝色表面,它指明场景中的敌人所能移动的位置。
点击Play,移动到Chomper面前,Chomper现在会追着你并进行攻击,左键点击并使用道具进行攻击。
Chomper会在受到一次攻击后死亡。如果想要提高攻击次数:
-
在层级窗口中,选中Chomper。
-
在检视窗口找到Damageable组件。
-
根据你想要Chomper死前所能承受的伤害,提高Max Hit Points(生命值上限)。Ellen的道具每次造成一点伤害。
造成对象伤害
我们可以使用接触伤害源(Contact Damager)组件来对拥有Damageable 组件的对象造成伤害。
在此使用一个箱子和Chomper进行演示:
-
在项目窗口中,打开Prefabs > Interactables。
-
找到DestructibleBox 预制件,点击拖入场景视图中。
-
使用平移工具将箱子放在Chomper上方。
点击Play,箱子会下落到在Chomper上,然后呆在那里,什么都没发生。
注意:不要离Chomper太近,否则它会追逐Ellen。你可以降低它的探测半径为0。
我们想要箱子在砸到Chomper时造成伤害。
-
在层级窗口中点击DestructibleBox 旁的箭头,展开其子对象。
-
选中DestructibleBox子对象。
-
查看检视窗口移至检视窗口底部,点击Add Component,搜索Box Collider。
-
按下键盘上的回车键或是点击Box Collider组件将其添加到DestructibleBox对象上。
-
在Box Collider组件上,勾选Is Trigger 属性。
-
点击Add Component,搜索Contact Damager(接触伤害源)。
-
点击键盘上的回车键或是点击Contact Damager脚本将其作为组件加入对象。
-
在Contact Damager组件上,将Amount(伤害量)设为3,要注意伤害量必须与Chomper的Max Hit Points数值相等,从而使Chomper受到足够的伤害。本例中我们设为3,请记得检查Chomper的Damageable 组件上的Max Hit Points。
-
设定Damaged Layers (伤害图层)为Enemy。
按下Play,箱子会落到Chomper上,Chomper会丢失生命值,然后转变为布娃娃(ragdoll)状态,而箱子则会弹开。
我们已经成功对Chomper造成足够伤害并击杀,但这个效果看起来不够好。我们可以让箱子在砸中Chomper时裂开。箱子上已经有接触伤害源,所以我们要对其进行调整使它也会影响箱子自身。
- 查看层级窗口,找到Chomper并选中。
写在最后
最后我想说:对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
相信它会给大家带来很多收获:
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。
已经成功对Chomper造成足够伤害并击杀,但这个效果看起来不够好。我们可以让箱子在砸中Chomper时裂开。箱子上已经有接触伤害源,所以我们要对其进行调整使它也会影响箱子自身。
- 查看层级窗口,找到Chomper并选中。
写在最后
最后我想说:对于程序员来说,要学习的知识内容、技术有太多太多,要想不被环境淘汰就只有不断提升自己,从来都是我们去适应环境,而不是环境来适应我们!
这里附上上述的技术体系图相关的几十套腾讯、头条、阿里、美团等公司2021年的面试题,把技术点整理成了视频和PDF(实际上比预期多花了不少精力),包含知识脉络 + 诸多细节,由于篇幅有限,这里以图片的形式给大家展示一部分。
相信它会给大家带来很多收获:
[外链图片转存中…(img-7sHW67c5-1720100621358)]
[外链图片转存中…(img-FvETujlu-1720100621359)]
当程序员容易,当一个优秀的程序员是需要不断学习的,从初级程序员到高级程序员,从初级架构师到资深架构师,或者走向管理,从技术经理到技术总监,每个阶段都需要掌握不同的能力。早早确定自己的职业方向,才能在工作和能力提升中甩开同龄人。