前言
这篇教程讲解如何在Unity中制作《吃豆人》游戏。该游戏最初发布于1980年10月,并很快风靡全球直至现在。Unity也用到了其中的形象作为UI:
本篇教程将使用Unity强大的2D功能,仅用62行代码来制做一个仿版《吃豆人》游戏。游戏会尽可能的简单,只关注迷宫、怪物、豆豆以及主角吃豆人。在今天的文章中,我们将先为大家介绍如何创建游戏迷宫。
让我们来看看游戏最终效果:
我们将该项目命名为pacman,选取项目存储的目录如C:\,项目类型选择2D,然后点击Create Project:
在层次面板(Hierarchy)中选中Main Camera ,将背景色(Background Color)设为黑色。并如下图所示调整大小和位置:
迷宫
● 迷宫精灵
让我们模仿原始游戏来制作一个类似的典型迷宫。
注意:您可以点击鼠标右键,选择另存为,把该图片保存到项目目录Assets -> Sprites文件夹下。保存在项目目录中文件,可以在项目视图(Project)中查看。我们选中刚保存的图片:
然后在检视面板(Inspector)中修改导入设置:
注意:Pixels Per Unit 值为8表示游戏世界的每个单位会填充8x8像素。我们会将该数值用于所有纹理。选择8是因为两个豆豆之间的距离是8像素,并且我们希望这是游戏中的一个单位。将锚点(Pivot)设为左上是便于后续使用。
现在将迷宫精灵从项目视图拖拽到场景视图(Scene):
查看检视面板,并将迷宫坐标设为(0,0):
● 迷宫物理
此时迷宫还只是一张图。不具有物理性质,所以吃豆人也无法在墙间游走。现在就为迷宫的每道墙都添加一个Collider。在检视面板中依次选择Add Component->Physics 2D->Box Collider 2D:
查看场景视图会发现Unity将Collider的范围覆盖了整个迷宫,这显然不是我们想要的:
我们希望每道墙都有单独的Collider。有两种办法可以实现。第一种是写个算法基于迷宫图片来生成Collider,第二种就是简单的手动添加。
在检视面板中点击Edit Collider 按钮:
注意:只有Unity 4.6及以上版本才有上面的按钮。
现在就可以在场景中使用绿色的点来调整Collider了:
这里的诀窍就是设置Collider的大小和中心点时注意值都是1.25、1.5、1.75或2.00这样,而非1.24687或1.25788。示例如下:
注意:如果后面吃豆人被困在迷宫或无法移动,就是因为迷宫的Collider没有完全设置好。
最终结果如下:
注意:调整所有Collider可能要些时间。
在昨天的教程中,我们分享了创建《吃豆人》迷宫的方法,今天我们将告诉大家如何添加游戏主角 - 吃豆人的动画!
添加吃豆人
● 吃豆人精灵
现在该游戏主角——吃豆人出场了! "上下左右“每个方向的移动都需要一个动画,将所有动画放在一张图中,一行就是一个方向的动画:
导入设置如下:
将Sprite Mode设为Multiple很重要,这会告诉Unity其中包含了多个吃豆人精灵。点击按钮打开Sprite Editor:
现在可以创建4个方向的动画了。再提一下,我们需要的动画如下:右(切片0,1,2),左(切片3,4,5)上(切片6,7,8),下(切片9,10,11)
先创建向右的动画。在项目视图中选中前三个切片精灵:
现在层次面板看起来如下:
Unity为每个动画都新建了游戏对象,但我们这里只需要一个。选中其余三个并删除:
现在有4个动画文件,但Unity并不知道要播放哪个动画。所以我们需要一个具有4种状态的动画状态机:right, left, up, down
还要添加变换让Unity知道何时切换动画。注:Unity会在处于right状态时重复播放right动画。它依靠Transition来判断何时切换状态。这些都是Unity自动完成的,我们要做的就是在后面的脚本中告知它吃豆人的移动方向。
在项目视图中双击pacman_0动画状态机:
状态机中已经包含right状态了,将项目视图中ShipAnimation文件夹下的left.anim文件拖拽到Animator中新建left状态:
● 创建参数
下面就来告诉Mecanim主意吃豆人的移动方向。移动方向参数类型是Vector2,下图展示了几种可能的移动方向:
DirY>0则向上移动,DirY<0则向下移动DirX>0则向右移动,DirX<0则向左移动
在Animator界面中选择Parameters标签页:
GetComponent<Animator>().SetFloat("DirX", 0);
GetComponent<Animator>().SetFloat("DirY", 0);
● 创建变换
我们希望Unity基于这些参数自动切换动画状态。变换就是用于实现这点的。例如,新建一个从left到right的变换,条件是DirX > 0。但要考虑到最完美的变换也会存在细微误差,因为浮点数的比较并不太完美,因此我们会使用DirX>0.1来判断。从其它任何状态切换为right都会用到DirX > 0.1。所以借助Unity的Any State来节省一些工作量。Any State几乎表示任何状态。所以创建一个从Any State到right的变换就相当于同时创建了left,up和down到right的变换。
右击Any State 选择Make Transition。然后将白色箭头拖拽到right状态:
禁用Settings中的Can Transition To Self :
因此,当吃豆人向右移动时(DirX > 0.1),状态机会切换到right状态播放向右移动的动画。同样的步骤新建另外3个变换:Any State到left,条件为DirX < -0.1,Any State 到up,条件为DirY > 0.1Any State 到down,条件为 DirY < -0.1
现在Animator如下:
在层次面板中选中pacman_0并重命名为pacman(右击选择重命名,或按F2):
Unity制作《吃豆人》游戏视频教程地址请点击此链接 http://www.insideria.cn/course/342
锐亚教育 锐亚科技 unity unity教程
- 还没有人评论,欢迎说说您的想法!