找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

程序引擎

关注:0

所属分类: 独立游戏开发 程序引擎

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

[复制链接]
查看: 165|回复: 0
发表于 2016-11-25 23:44:17 | 显示全部楼层 |阅读模式
本篇教程将教指导大家使用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”。双击脚本打开脚本编辑器,更改“Controls”代码如下:

[C#] 纯文本查看 复制代码
public class Controls : MonoBehaviour {    public Rigidbody2D rb;    public float movespeed;    void Start () {        rb = GetComponent();    }    void Update () {        if (Input.GetKey(KeyCode.LeftArrow))        {            rb.velocity = new Vector2(-movespeed, rb.velocity.y);        }        if (Input.GetKey(KeyCode.RightArrow))        {            rb.velocity = new Vector2(movespeed, rb.velocity.y);        }    }}

脚本声明了两个公共变量,您可以在编辑器或其它脚本中进行修改。第一个“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#] 纯文本查看 复制代码
if (moveright) { rb.velocity = new Vector2(movespeed, rb.velocity.y); } if (moveleft) { rb.velocity = new Vector2(-movespeed, rb.velocity.y); }

下一步,新建C#脚本命名为Touch,用来判断主角应该向左走还是向右走。Touch脚本代码如下:

[C#] 纯文本查看 复制代码
using UnityEngine;using System.Collections;public class Touch : MonoBehaviour        {            private Controls player;            void Start()            {                player = FindObjectOfType();            }            public void LeftArrow()            {                player.moveright = false;                player.moveleft = true;            }            public void RightArrow()            {                player.moveright = true;                player.moveleft = false;            }            public void ReleaseLeftArrow()            {                player.moveleft = false;            }            public void ReleaseRightArrow()            {                player.moveright = false;            }        }

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



将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”对象,并添加触发器与相应的触发函数。



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

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

原文连接:How to create a simple 2D platformer for Android in Unity – Part one
原文作者: Adam Sinicki
转载请注明来源:Unity官方中文社区(forum.china.unity3d.com)。请勿私自更改任何版权说明信息。


Unity, 教程, Android, 新手上路


发点VR高级教程


dingdingding



看看,学习学习~~~~~~~~~~~~~~~~~~~~~~~~~~~~



谢谢分享,谢谢分享


感谢分享



希望成功做出第一个作品



这游戏看着很好玩嘛,坐等更新下一篇



学习了,不错不错。。学习了


谢谢啦,学习了



来源:网络转载

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
十里春风不如你~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

发布主题 快速回复 返回列表 官方QQ群 微博