平台闯关游戏开发教程

大家玩过最经典的平台过关游戏那就是非超级玛丽莫属了。本篇文章就手把手教大家怎么用小游戏可视化工具制作这一类游戏。
1.png

平台闯关游戏要素

  • 主角
  • 敌人
  • 平台

主角是最主要的要素,第一视角,具有跑动、跳跃、攻击等能力。敌人是次要角色,对主角造成伤害,被主角杀死后,主角可获得收益。平台是对主角和敌人的支撑,相当于一个不可穿透的平面。

拆解后的如下图所示,区分上述三个要素,其他的背景、蘑菇等只是辅助元素。
1.png

接下来就一步一步教大家如何制作。

搭建平台

第一步是要搭建平台,没有平台不然主角也站不稳。打开网址:https://gamemaker.weixin.qq.com/ide#/

新建一个游戏,给游戏取一个名字,然后选择游戏类型为横屏游戏。

接下来进入游戏编辑的页面,一进去什么都没有,把提前准备的素材导入编辑器。

点击添加按钮

把图片拖拽到这上面就能上传。因为官方素材库提供了一些开源的免费素材,那么大家也可以直接用。我就以跳跳图为例子来制作平台闯关游戏。

像这种样子的图片就是平台,用来做地面或者空中平台。

选中一组平台素材,导入项目

导入到画布上,稍微摆放一下布局如下

精灵有了,就要给精灵添加平台的能力。选择一个平台,在属性面板找到“管理行为按钮”。

点击按钮,可以在行为库里找到固体,打开按钮后,就可给当前的精灵添加固体行为。

默认保持启用就行。添加行为的操作就完成了。剩下的平台精灵,都同样的操作,全部加上固体行为。

点击运行游戏,可以看到下图,没什么动画,看不到固体行为作用。先别急,这个行为要和主角搭配起来使用。接下来,我们就来给游戏创建一个主角。

创建主角

按照导入平台精灵的流程,同样将主角导入。

导入兔子后给兔子添加一个平台角色行为,操作方式和平台精灵是一样的。

添加行为后,可以看到属性面板,我们默认配置了一些属性。

你可以任意的修改这些参数,也可以用积木来控制这些参数,以满足你的游戏效果。比如是否可以两段跳(连续跳跃两次),起跳的速度等等,当然你也不用修改任何参数也可以运行。

现在来运行游戏,看看会是什么效果。

可以看到兔子从空中掉落,直到与平台相交。但仔细看我们会发现,兔子的下落有点多,位置不太准确。

我们可以通过开启“调试模式”,我们来确认下边缘。

打开调试后,我们可以看到真实的碰撞边缘(绿色的)。可能会出乎你的意料。游戏中并不会真实的计算精灵的精确边缘,这样游戏的性能会大幅下降,只能模拟精灵的边缘,你看到就是我们模拟出来的边缘。当然你也可以自己进行调整。

地面一般都是平的,所以我们可以设置碰撞轮廓为矩形。


然后把主角的轮廓也调整一下,调整为矩形。运行游戏如下图,主角就可以刚好站在平台上。

平台角色行为可以让角色有跑跳功能,这样就能直接让角色运动起来,不用写一行代码,可以按下键盘的方向键试试。

创建敌人

敌人一般分为两种,会运动且会对主角造成伤害,另外一种是静止不动对主角也会造成伤害的。

  • 障碍物
    在游戏中,添加一个仙人掌精灵,作为障碍物,主角碰到仙人掌就会掉血,将仙人掌放置在平台上。

  • 小怪
    添加一个小怪,小怪可以上下运动。

让小怪运动的逻辑如下,循环播放帧动画,并且在垂直方向上下移动:

至于主角碰到障碍的逻辑,等我们在游戏主逻辑再来写。

辅助元素

游戏中还需要一些辅助元素,比如背景图,云朵,小草小花之类的元素,这些元素是大部分是没有逻辑,只需要在画布场景中摆放好位置就行。

横屏过关的游戏场很长,背景图可以多复制几份,将整个游戏场景拉长,摆放平台,设计关卡。

游戏主逻辑

游戏的主角是兔子,需要控制兔子越过层层障碍,最终抵达终点过关。现在主角最基本的跑跳可以了,剩下的是怎么和其他元素产生交互。

  • 摄像机
    摄像机的概念也不覆盖,可以理解为手机的摄像头一样,但你只能从手机屏幕看到一部分,不可能把整个视野的图全部拍摄进去。同理,游戏中也是这样。如果游戏的场景很大很大,那么只能显示手机屏幕这么大的场景。因为只要兔子动了,其他的是静止的,真个画布都会跟着动。所以只要设置摄像头跟随兔子就行,兔子的周围精灵就会被绘制在屏幕上。

除了有些元素会跟随摄像头移动,但有些元素我们有希望一直固定在屏幕上,比如游戏的得分和主角血量,这个时候只需要将他们移除摄像机就行。注意:主要有角色设置摄像机跟随了,其他元素默认会被加入摄像机图层。

为了摄像机只渲染指定范围的元素,我们可以给摄像机设定一个区域。给某个精灵加上下面的积木,这个精灵的宽高就是摄像机的绘制区域。

  • 兔子如果从平台上掉落就判断为游戏结束

  • 如果碰到仙人掌,就会掉血,并且闪烁后退

  • 主角血量 血量是要用变量控制,因为碰到障碍物会掉血,获得回血的药又会加血。因此这里需要一个数字精灵。

任选一个数字即可。新建一个全局变量:血量

给数字加上逻辑,实时同步变量的值。如果血量小于1,则游戏结束

游戏的主要逻辑就这样,更详细的可以参考文章尾部示例

过关

在场景尾部放一个胡萝卜,只要兔子碰到胡萝卜,则表示过关了。

积木逻辑如下:

碰到之后发一个通知“成功”

另外,我们新建一个容器,提示游戏过关了。当收到通知的时候,显示出来。

按照上面的说明,一个关卡就完成了,更多关卡可以新建场景来设计。发挥你的脑洞来做一款游戏吧,更多细节请参考这里

results matching ""

    No results matching ""