查看原文
其他

Unity 2D教程 | 平台游戏(下)

2016-11-15 Unity官方 Unity官方平台
上周为大家分享的Unity 2D平台游戏前两篇教程中,我们已学会了如何使用Unity来制作基本的2D平台游戏,实现了可以通过键盘及触摸屏进行控制的角色,添加了基本物理、主角坠落、死亡特效以及与障碍物的交互等。
最后这篇将添加一些收集对象、音乐、动画及关卡,来进一步完善这个小游戏。如果还未学习前两篇,请先查阅:

上篇:Unity 2D教程|平台游戏(上)
中篇:Unity 2D教程|平台游戏(中)
请点击【阅读原文】查看所有代码并下载示例工程。

添加音乐
在Assets目录下新建文件夹“Audio”,并将.MP3格式的音乐文件放在该文件夹下。然后将.MP3文件拖拽至主角游戏对象“rushdy”上,并勾选“Play On Awake”及“Loop”。



细微调整
首先更改主角Rigidbody组件的一些属性设置为如下:
  • Gravity Scale: 2

  • Angular Drag: 13

  • Jumpheight: 12

  • Movespeed: 4


更改属性后Rushdy反应将更灵敏,控制起来也更好玩。然后更改用于触摸控制的按钮大小,以更适应触摸屏的操作。最后在“File > Build Settings > Player Settings > Resolution and Presentation”设置下,取消勾选垂直方向,以保证游戏是横版显示的:



如果检视面板过于杂乱,可以新建游戏对象“Platforms”及“Hazards”作为分组节点,分别用于存放平台及障碍物。



加入收集对象
下面加入一些收集对象(水晶),新建Sprite命名为“Crystal”,使用下图:


为“Crystal”添加Polygon  Collider 2D组件,并勾选“Is Trigger”将其设为触发器。调整“Order In Layer”属性,保证让其永远显示在前方。然后将“Crystal”保存为Prefab。如果对这里的步骤不太了解,请先阅读前面的上篇中篇教程。

新建GameObject命名为“collectibles”,用来存放所有的“Crystal”收集对象。选择您喜欢的音效拖拽到“collectibles”,在玩家收集水晶时播放。

在“Controls”脚本中新建公共变量crystals,int型,用来表示收集的水晶数量。然后新建脚本“Crystals”,与上篇教程中的“Hazard”脚本类似,区别在于玩家与水晶碰撞时,消失的会是水晶,并且将玩家对象的crystals值加1。
请点击【阅读原文】查看脚本代码。
将“Crystals”脚本绑定到对应的Prefab上,并将刚刚新建的“collectibles”对象拖拽至“Crystals”脚本的AudioSource字段中。保存后就可以随意在关卡中放置收集对象了。

加入分数显示
此时还需要创建UI来显示玩家收集的水晶数量。依次点击菜单项“GameObject >  UI > Text”新建文本对象,然后设置Text的锚点将其固定在屏幕左上角。在检视面板中设置文本为“Crystals: 0”,并调整字体到合适的大小。



再次新建脚本“Score”用来显示分数,将脚本绑定到刚刚新建的文本对象上。
请点击【阅读原文】查看脚本代码。
为主角添加动画
目前主角的移动还不是很自然,下面为主角加入一些动画。首先添加两张图片:
 



将这两张图加入场景,然后打开“Animation”窗口,可以看到其中的“Create”按钮。点击按钮即可创建动画,命名为“Idle”,然后系统会在Assets目录下自动生成包含该动画文件的文件夹“Animations”。


接着会看到Animation窗口下Idle右侧出现了两个小箭头,点击箭头后选择“Create New Clip”新建另一个动画“Walking”,使用两个小箭头可以快速切换这两个动画。



Animation窗口上会出现时间轴,用来调整动画对象的关键帧。Idle动画的关键帧是第一帧显示Rushdy,在1:30处将Rushdy设为半透明,然后再过几秒恢复正常。以同样的步骤设置Walking动画,中间的关键帧将Rushdy的Y轴缩小,让它显得比较“矮”,这样会有一个弹跳的效果。



打开“Animator”窗口会看到类似图表的窗口,目前的箭头指向是“Entry”到“Idle”,表示“Idle”是当前的默认动画。这里“Idle”和“Walking”都表示一种状态(由于目前动画非常简单,所以还无需用到Any State)。右键点击“Idle”选择“New Transition”,会新建箭头,拖拽箭头让其指向“Walking”。

设置好后点击“Animator”窗口上的“Parameters”,会看到“+”按钮,点击按钮新建bool型变量命名为Walking:



下面在“Control”脚本中加入Animator变量,并在Update函数中判断是否为移动状态。
请点击【阅读原文】查看脚本代码。
回到“Animator”窗口,打开检视面板上的“Conditions”选择“Walking”设为“true”,表示当Walking变量为“true”时就开始播放动画。取消勾选“Has Exit Time”,以免在动画还未播放结束就切换状态。



然后重复以上步骤,添加从“Walking”切换回“Idle”的状态转换。到此主角的动画就完成了,当然您还可以自由发挥,为敌人和其它物体也添加一些动画。

添加道具和关卡
将分数文本对象显示的默认文本改为“Crystals: 0 / 41”,在关卡中加入21个水晶。要想收集所有水晶,玩家必须对移动路线进行准确地预判。所有水晶成功收集后,就可以进入下一关了!

点击“File > New Scene”新建场景,利用之前创建的Prefab搭建新关卡的场景,也可以直接复制第一关的场景,在此基础上进行调整。编辑完成后保存新关卡,命名为“level2”。



下面在“Controls”脚本中添加顺利通过第一关后跳转到第二关的场景转换代码(通常会有专门的场景管理脚本)。
请点击【阅读原文】查看脚本代码。

最后在构建APK包时,记得在Build Settings中勾选所有关卡。现在这个2D平台游戏就比较完善了,赶紧动手试试吧!



结论

这是一篇非常简单的2D游戏教程,但也包含了大量的Unity基础操作与脚本的概念。希望通过本教程的学习,大家对Unity以及平台游戏都有了基本的了解。当然还可以在此基础上继续改造,例如将主角设为自动向右前进的,就可以直接改造为之前为大家介绍过的无尽跑酷游戏。欢迎大家自由发挥想象力,创造出属于独一无二的玩法!


本文来源于:androidauthority.com

原作者:Adam Sinicki


更多Unity教程

Unity 2D教程|平台游戏(上)

Unity 2D教程|平台游戏(中)

Unity教程|3D无尽跑酷游戏(上)

Unity教程|3D无尽跑酷游戏(下)


Unity官方近期活动




点击“阅读原文”下载示例工程!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存