查看原文
其他

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

2016-11-09 Unity官方 Unity官方平台
本篇教程将教指导大家使用Unity的2D功能,制作一款2D平台游戏,即通常所说的横版过关游戏。如果您对于Unity的基本操作与概念还不太了解,可以先学习我们此前介绍过的,使用Unity制作3D无尽跑酷游戏的系列教程的上半部以及下半部

通过本教程的学习,大家将可以了解到Unity在2D方面的功能及操作,了解掌握UI、2D物理及输入控制等相关内容。本教程共分为三部分,今天先为大家介绍上篇。游戏最终效果如下:




准备工作
本教程示例项目使用的Unity版本为5.3.1f1。首先打开Unity新建2D工程,如下图:


这里将工程命名为“Rushdy Worm”,这也是游戏主角的名称。


添加Sprite
新建工程完成后,您会打开看到编辑器界面如下的编辑器界面:


右键点击Project视图下的Assets,在Assets目录下新建文件夹Sprites,用来存放游戏需要用到的所有图片资源。现在暂时只需两张图,分别是角色图片“rushdy”以及地面图片“ground”:


将上面的图片存放于Sprites文件夹下,然后,从Project视图中拖拽两张图片到场景中,。接着,可以在场景视图调整图片的位置、旋转及缩放等属性。



添加物理
在选中层级视图(Hierarchy)选中中的地面“ground”,在检视面板(Inspector)中点击下方的“Add Component”按钮。,然后逐步依次选择“Physics 2D > Box Collider 2D”为地面添加盒式碰撞体。对于不规则图形的碰撞,您还可以选择使用多边形碰撞体“Edge Collider”。




接下来为主角“rushdy”添加碰撞体步骤,与之前使用与“ground”的操作相同相同的步骤,为主角“rushdy”添加碰撞体。此时主角还没有重力,您可通过再次点击“Add Component”按钮,为主角添加“Rigidbody 2D”组件,为这样主角赋予就拥有物理属性了。点击运行,您便会看到主角从空中落到了地面上。

添加控制脚本
下面为游戏添加一些输入控制的脚本。首先在Assets目录下新建文件夹Scripts,用于放置在游戏中所用到的控制游戏逻辑的全部脚本。然后在Scripts文件夹下新建C#脚本,命名为“Controls”。脚本源代码可通过点击[阅读原文]进行查阅。

脚本声明了两个公共变量,您可以在编辑器或其它脚本中进行修改。第一个“rb”是角色的“Rigidbody 2D”组件的引用,“movespeed”则是角色的移动速度。

在Start函数中,需要为“rb”变量赋值。,并在Update函数中,实现监听左、右方向键的输入,并根据输入为角色添加相应的加速度,也就是给予角色一个向左或向右的动量。

回到Unity编辑器,将Controls脚本拖拽至角色游戏对象“rushdy”上,在检视面板中将脚本的“movespeed”属性值设为“3”。现在点击运行,就可以使用左右方向键来移动角色了。

添加相机移动
将场景中的Main Camera移动至主角下方成为“rushdy”的子对象,这样就能够让相机跟随主角一起移动。使用场景视图左上方的移动工具,将相机移动至主角的中心位置。



然后选中“ground”对象,使用场景视图左上角的矩形缩放工具,或者直接更改检视面板上的Scale属性,将地面的宽度拉伸至一定长度。

此时点击运行,会发现主角从平台上掉落时会不停地旋转。应该怎么样处理呢?您可以选中“rushdy”对象,在检视面板上展开Rigidbody 2D组件的Constraints,勾选条件“Freeze Position Z”。这样主角在下落时就不会发生旋转了。

另外大家还可以按照自己的喜好添加背景。比如这里我们可以,为游戏添加背景图片“stars”,将背景图片的“order in layer”属性设为-1,这样就会渲染在所有对象的后方。然后将“stars”坐标的“Z”值设为20,并将Main Camera的渲染模式从“Projection”更改为“Perspective”,即设置相机为透视相机。这样就为背景添加了深度,角色在移动时,背景移动的速度会相对慢很多。



添加触摸控制
由于这个游戏最终希望是在移动平台上运行,所以要添加一些适用于移动平台的触摸控制。依次点击菜单项“GameObject > UI > Image”在场景中新建Image。因为场景中原本不存在UI元素,所以,Unity会同时新建一个Canvas用来显示UI对象。



将上面的图片拖拽至Image组件的Source Image字段,将Image重命名为“Right”,点击打开检视面板上方的锚点预设置面板(Anchor Presets)。按住alt键点击stretch与bottom对应的右下角。,这可将样将箭头的锚点设为右下角,让其始终显示在屏幕右下角。

利用复制粘贴的方式在场景中新建一个Image,重命名为“Left”,将Scale的“X”值设为-1让箭头翻转显示。同样打开锚店设置面板,将“Left”的锚点设为左下角,让其始终显示在屏幕左下角。

新建一个空的游戏对象命名为“TouchController”,作为放置两个箭头的容器。打开锚点设置面板,将“TouchController”锚点设置为横向拉伸,让它始终保持与屏幕一样的宽度。



然后在Controls脚本中声明两个bool类型的公共变量,moveright及moveleft。为此需要在Update函数中做出一定修改。


然后,新建C#脚本命名为Touch,用来判断主角应该向左走还是向右走。

该脚本引用Controls脚本中的moveright及moveleft变量,并用两个函数分别为它们赋值。moveright和moveleft会用于控制主角的移动方向。 


对于update函数的修改以及新建的“Touch”脚本,各位可通过点击[阅读原文]进行查阅。




将Touch脚本拖拽至之前创建的游戏对象“TouchController”上。选中Project视图的“Right”对象,点击检视面板上的“Add Component”按钮,依次选择“Event > Event Trigger”添加事件触发器,然后点击“Add New Event Type”添加两个事件类型,分别是“Pointer Down”和“Pointer Up”,分别在点击图片和松开时触发。

将TouchController游戏对象拖拽至两个事件的对象属性栏,然后就可以选择相应的触发函数了。为“Pointer Down”触发器设置触发函数“RightArrow”,同样的,“Pointer Up”触发器设置触发函数“ReleaseRightArrow”。这样,在进行输入操作后,就会调用相应的函数去更改moveright和moveleft的值。

以同样的步骤设置“Left”对象,并添加触发器与相应的触发函数。


下面点击运行,就可以通过左右方向键来控制角色移动了。

上篇的内容就介绍到这里,下一篇将继续为大家讲解,如何为主角添加跳跃、降落以及死亡粒子效果,并添加障碍物等相关内容。请保持关注。


本文来源于:androidauthority.com

原作者:Adam Sinicki


更多Unity教程

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

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

Unity教程|制作一款3D射击游戏(上)

Unity教程|制作一款3D射击游戏(下)


Unity官方活动


1Vision VR/AR Summit Asia精彩抢先看继2016年2月Vision VR/AR 全球峰会在美国洛杉矶成功召开后,Unity将在12月14-15日把Vision Vision VR/AR Summit第一次带到太平洋彼岸的亚洲,全球最古老,却最具VR/AR创新活力的中国北京。2Vision VR/AR AwardsVision VR/AR Awards 2017已在亚洲区率先启动作品征集。参加大赛的作品可以是游戏、可视化模拟、360°全景视频等,并且这次大赛不区分应用范围,不限制使用技术与引擎。3《无间道》VR版导演田浩洋专访Vision VR/AR Summit Asia 2016开幕前夕,我们特别采访了演讲嘉宾 —— VR版《无间道》导演田浩洋先生,与我们聊一聊VR在影视方向上的应用 。


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

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

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