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

查看: 1210|回复: 0

[技术] 2D游戏开发套件指南(下)

[复制链接]

1113

主题

1804

帖子

2万

贡献

管理员

Rank: 9Rank: 9Rank: 9

积分
23535
QQ
发表于 2018-5-20 03:31:26 | 显示全部楼层 |阅读模式
昨天我们在《2D游戏开发套件指南(上)》中分享了使用2D游戏开发套件创建场景、绘制及测试关卡、添加移动平台、触发开门动作。今天我们将分享2D游戏开发套件游戏中的敌人、摧毁对象、传送玩家。赶紧使用开发套件一起进入2D游戏开发的世界吧!

你可以访问Asset Store资源商店下载2D游戏开发套件:
https://assetstore.unity.com/pac ... /2d-game-kit-107098

敌人
2D游戏开发套件中有二个预制的敌人:Chomper和Spitter。 你可以在项目窗口的Prefabs> Enemies中找到它们。

01.png


它们都由检视窗口中的Enemy Behaviour(敌人行为)组件控制。你可以使用这个组件调整一些属性,例如:敌人的速度、视野(FOV)、血量等。每个敌人都带有相同的组件,但它们的设置稍有不同。注意,除了输入特定数值之外,你也可以向左或向右点击拖动组件属性来调整数值。

请尝试添加一个Chomper到场景中。修改设置属性来调整它的速度和视野(FOV)。不要忘记,当处于Play运行模式时,你可以按下F12来启用武器,然后通过O或K进行攻击。

02.png


在上面的场景中,我们选中了一个Chomper。调整了它的View FOV(视野区域)和View Direction(视野方向),这样它就不会看到Ellen,除非它转身。

03.png


摧毁敌人
我们现在学习伤害系统。我们将通过把一个箱子扔到Spitter身上来干掉它。

04.gif


首先我们绘制一个关卡,Ellen会站在高处,而Spitter站在平台下方,如下图所示。

05.png


打开Prefabs > Enemies,然后将Spitter拖入场景视图中,将它放在关卡中较低位置,靠近悬崖边缘。选中Spitter,找到Enemy Behaviour Script(敌人行为脚本),降低View Distance(视野距离)的数值,使Spitter不会在测试游戏的时候马上向玩家射击。

06.png


在项目窗口中,打开Prefabs > Interactables,点击拖动PushableBox预制件到场景视图中。在层级窗口选中PushableBox,然后在检视窗口点击Add Component(添加组件)。在搜索栏输入Damage,点击搜索结果中的Damager,添加到PushableBox上。

07.png


如上图所示,Damager由绿色碰撞方框表示。这个区域会造成伤害。它目前还未覆盖PushableBox,所以当我们把方块推到Spitter身上时,箱子不会伤害它。


现在让我们移动这个盒子,让它有和PushableBox大概相同的位置和大小。有二种方法实现:

1 选中并拖拽绿色碰撞箱边缘上的绿色点,使其覆盖PushableBox。

08.png


在检视窗口中找到Damager组件。调整偏移(Offset)和大小(Size),定位并确定碰撞箱的大小。这样做最简单的方法是左键单击属性上的文字,然后向左向右拖动来调整数值

09.png


最后我们需要确定该伤害值传给了正确的游戏对象。我们在编辑器中将对象分离为图层(Layer),这样它们就能轻易被找到并分离。

选中PushableBox,在检视窗口中找到Damager组, 在HittableLayers下拉列表中,选中Enemy图层。

10.png


PushableBox现在会对Enemy图层的任何对象产生伤害,例如我们之前的Spitter。请对其它角色试验伤害功能,甚至对主角Ellen也可以进行尝试。

装饰
2D游戏开发套件中还包括用来装饰的精灵,它们在示例游戏“探索者”(The Explorer)中使用。

为了让你的关卡有分享的价值,你可以在项目视图中Art > Sprites > Environment下的找到装饰品。多数装饰品存在子文件夹中,所以不要忘记点开小箭头展开文件夹,查看目录下的其它精灵。

11.png


提示:如果在示例游戏中有什么东西吸引了你的注意,你可以在项目视图搜索名字来找到它。

传送玩家
你可以将玩家从场景中的一个区域传送到另一个区域,或是在二个不同的关卡间进行传送。

1  在场景中传送
如果想在一个场景中传送玩家,我们需要设置一个转移点(transition)。要实现这个功能,我们将需要二个预制件:TransitionStart和TransitionEnd。

首先需要设置转移过程的起始点。在项目窗口中,打开Prefabs > SceneControl找到TransitionStart预制件,将TransitionStart拖到场景视图中。将它放到一个玩家在行走过程中能碰到其碰撞体(绿色方框)的位置。本示例中,我们放在了门口的另一边。

12.png


然后设置目的地。从SceneControl文件夹拖拽另一个TransitionStart预制件到场景视图中,在检视窗口中,将其重命名为TransitionEnd。

13.png


现在将二者链接起来。在层级窗口中,选中TransitionStart游戏对象;在检视窗口中找到TransitionPoint组件;将Ellen游戏对象从层级窗口拖到Transition Point(转移点)组件的Transitioning Game Object(被转移游戏对象)属性中,将Transition Type(转移类型)设为Same Scene(同一场景)。

14.png


这会确保Ellen是唯一被传送的对象,并且她在同一场景中被传送。

现在设置目的地:将TransitionEnd游戏对象拖入TransitionPoint组件的DestinationTransform属性中,将Transition When(何时转移)设为On Trigger Enter(进入时触发)。

On Trigger Enter是指该转移会在玩家进入碰撞体的时候触发,不需要按下按键。如果你想要在玩家按下交互键(E)的时候才进行传送,把Transition When设为Interact Pressed(按下交互键时)即可。

2  传送到另一个场景
如果想要让玩家传送到一个新场景中,我们需要二个预制件:
  • TransitionStart预制件;它会将玩家“发送”到目的地。它包含一个Transition Start(转移起始点)组件,能够定义传送开始时的所有属性,还能确定玩家会被传送到哪里。把这个预制件放到传送开始的位置。
  • TransitionDestination是个“接收”玩家的预制件。它包含一个Transition Destination(转移目的地)组件。请把这个预制件放在另一场景中,那里会是传送结束的位置。


设置 TransitionDestination
首先我们设置目的地,这样就可以在设置起始点时获得所需的全部信息。若要把转移点加入场景,打开场景,在项目窗口找到Prefabs > SceneControl > TransitionDestination。把它放到传送到达的场景中。

TransitionDestinaton预制件包含一个Scene Transition Destination(场景转移目的地)组件。

15.png


首先设置Destination Tag(目的地标签)为一个字母。字母是什么不重要,只要这个组件是场景中唯一带有那个字母的Scene Transition Destination 组件即可。

然后告诉它应该接收哪个游戏对象。将玩家对象(即Ellen)从层级窗口拖到Transitioning Game Object(被转移游戏对象)属性中。

最后,确保目的地场景在编辑器的Build Setting(构建设置)中。打开File > Build Settings(文件 > 构建设置),点击Add Open Scenes(打开场景)。

设置TransitionStart
这些设置大部分与上一节中的设置相同,只是进行了一些更改。

16.png

  • 将Transition Type(转移类型)设为Different Level(不同关卡)
  • 将New Scene Name(新场景名字)设为目的地场景的名字
  • 将Transition Destination的标签设为你在Transition Destination Component中设置的Destination Tag对应字母


示例
我们要让玩家传送到游戏的第一关。在Transition Start组件中,如下修改设置:
  • 将Transition Type设为Different Level
  • 将New Scene Name设为Zone1
  • 将Transition Destination设为A


17.png


点击运行Play,,然后移动角色到传送点。你便会传送到Zone1。

2D游戏开发套件中的大多数对象都使用Pressure Pad设置中显示的Events系统,探索现有场景(Zones 1 to 5),了解如何使用事件和触发器设置其它对象。

结语
2D游戏开发套件指南就为大家介绍到这里了,希望大家能够使用它实现自己的创意,创作出精彩的2D游戏。后续我们会介绍最新发布的3D游戏开发套件,尽请期待!更多精彩教程尽在Unity中文官方论坛(Unitychina.cn) !

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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