奋斗一天下午的小编终于把这个游戏搞出来啦!(吼吼吼~) 下面为大家讲解一下制作步骤。
楔子:来地球探险的外星人错过了回星球的飞船。 现在为了赶上最后一班飞船, 他要克服重重阻碍逃离这里。 看, 它已准备出发。
玩法:玩家通过在平台间跳跃到达顶端碰到门即为胜利弹出congratulations!, 玩家的生命值为3, 当玩家吃到树的时候生命值会+1, 当玩家碰到水的时候生命值会-1, 当玩家碰到冰块的时候生命值会-2。 当玩家生命值<=0时,游戏结束会弹出game over, 吃到金币得分score会+10。
精灵:外星人+外星人平台
属性:固体 平台
行为:通过在平台间跳跃, 并躲避水和冰块。
精灵:墙
属性:固体
行为:承载玩家和各种道具。
精灵:水,冰块
属性:碰到后生命值减一
行为:使玩家减少生命值。
精灵:钱
属性:碰到后消失
行为: 使玩家得分增加。
精灵:沙子
属性:无
行为: 使玩家速度减慢。
精灵:树
属性:碰到后消失生命值加一
行为:使玩家生命值增加
首先
添加背景
新建文件双击空白处选择tiled background添加背景
根据自己想要的长度可以改一下尺寸
此处附一张可以无限拉长的背景图
更改此图层的名字为background(便于区分啦)
在空白页面的properproperties bar里面将size调成和图片相同大小
在右侧layer bar中将background图层锁定(避免手残党乱点)
点一下图层名称左侧的小锁头就好
再在layer bar中右击添加一个新图层
此时要开始我们的正式工作啦~
添加平台
先做出游戏开始玩家所站的地面(避免玩家直接掉下去啊)
a.双击后窗口中选择sprite 此时就可以插入图片啦
以后不在赘述添加sprite的方法
更改名称为wall1
b.为wall1 添加behavior》solid
此时地面就被认为是不可以被穿过的固体啦~
7.再做一组不同颜色的地面wall2(属性选择同wall1,只需作出一个剩下的一copy就好啦)
安置在两侧做缓台并承载其他sprite
copy一下wall2放到你想要的位置吧
记得要考虑我们的玩家是否可以找到下一个落脚点
是否距离过长无法跳过去
添加玩家精灵
接下来我们的玩家闪亮登场啦 当当当当!
让我们添加玩家精灵。
和以前一样,在层的空白处双击,选择插入新的对象,选择Sprite。当鼠标变成十字星时,在格子上点击,图像编辑器就出现了。
让精灵动起来
让我们从玩家idle动画里加入精灵动画。像以前一样,右击Animation Frames窗口选择Import sprite strip…。
Importing a sprite strip again.
选择图片,注意这是个完整的精灵图,没有动画帧。你也可以添加一系列的图片,使用选项Import frames…,但现在让我们使用前者的方法。
注意!在开始的时候有默认的空白帧。右击选择删除。你现在有了11个动画图像组成的玩家run动作序列帧。
The Idle animation.
裁剪
你可能注意到了玩家图像周围有透明的地方,这很常见。这会浪费我们的内存,并使碰撞变得不准确。
在图像编辑器里按住 shift并选择Crop。
如果你没按着shift,那么就只有这帧被裁剪。所以确定你一定要按着shift,裁剪的才是整个动画。玩家动画图片现在被裁剪完毕了,没有多余的空白。
设定原点
原点或者称之热点默认在对象的中心。在平台游戏里,最好把原点设为玩家角色的脚。这意味着如果动画图像变高,它会往上长,而不是插入到地板里。
要设置原点,点击Set origin and image points工具。
The origin tool in the image editor.
现在你会在玩家图像里发现一个红点。这就是原点,点击去改变它的位置。现在我们想把它设成底部中间。我们可以按下数字键盘2.如果你没有数字键盘,你可以右击Origin然后选择Quick assign-Bottom。
如果每帧都得这么做会很麻烦,幸运的是有个快捷方法。在Image points里右键点击Origin选择Apply to whole animation
Applying origin to whole animation
Bingo!每一帧的原点都设好了。
循环动画
在动画窗口里点击Default,重命名为run。
Renaming the animation.
在属性栏里,把动画的速度改成9,把循环设成yes。
Setting the animation Speed and Loop properties.
在Idle动画右击选择Preview。你就能看到角色动起来了。关闭动画预览和图像编辑器。你能在你的图层里看到玩家角色。
把对象重命名为Player,我们需要好的命名习惯。
添加行为
Construct 2里有很多行为,行为使你的对象按照一种预置的方式运行,这样会省下很多时间。现在可以在事件系统里做很多行为,但通常会花很多时间。这就是为什么行为很容易上手并使你的游戏运行更快!
平台行为能兼顾一系列的动作。然而,有个重要的提示:行为要应用在不可见的长方形对象上,而玩家角色覆盖在这上边。如果行为的对象不是动画,那么它运行的会更好。改变动画帧会让对象部分粘在墙上,这会给行为造成混乱。而且,这避免了愚蠢的碰撞行为,比方说你的玩家角色用鼻子悬挂在平台边缘。
所以首先我们需要创建一系列不可见的正方体。双击层添加新的精灵,这次如下图一样导入正方体。
像以前一样,我们需要在底部设置原点。所以点击Set origin and image points然后按下2(或者用quick assign菜单)来指定原点位置。
关闭图像编辑,你现在可以在图层上看到它。更改尺寸使之接近你的玩家角色尺寸。
把你的对象重命名为platform,因为这个是用来测试玩家的运动和碰撞的。而且,在属性面板,把Initial visibilit设为Invisible,因为我们不想看见它。
我们也想让玩家角色盒子和平台的运动碰撞更容易检测。在玩家格子属性里,点击Add / Edit选择Edit behaviors。在对话窗口里,点击绿色的加号。
Adding a behavior
双击平台行为。
你可以看见新的平台属性已经显示在属性栏里了。你可以更改速度或者加速度。让我们使弹跳更利落点。把Jump strength设置成1100,把Gravity设成2500.
我们也想让屏幕跟着玩家,所以点击绿色的加号,添加Scroll To行为。
两个行为添加后,关闭玩家行为对话窗。
添加变量
我们还想让我们的玩家有生命值
在properproperties bar中instance variable中点击add
我们将变量命名为health 并设置初始值3
添加固态行为
平台需要知道对象落在了什么上面。玩家角色会穿过不是固态的对象。所以这次选择添加Solid行为。
我们需要知道玩家角色是在玩家角色盒子之上的。转到Event Sheet 1,这里我们可以用事件系统定义游戏的逻辑。
创建事件
如果一系列的条件都满足,事件就会运行。如果运行,那么行动就会运行。
在这个案例里,我们想要玩家角色一直在玩家角色盒子之上。为了这么做,我们应该在每一次刷新都更新位置,或者称之为游戏里的每一帧。
在事件表单空白处双击,创建一个新事件。
双击选择System对象,它里边包含了每次刷新的条件。
现在我们有了一个空事件,每次刷新都会运行。
Every tick
点击添加按钮
我们想要放置Player,所以双击Player。
Set position to another object
双击Set position to another object。对于Object,点击click to choose然后选择PlayerBox。把Image point设为0(意思是原点)。点击完成,我们就完成了事件。
再依次建立如下事件 使我们的玩家可以蹦蹦跳跳
希望你明白了:我们要一直把玩家角色放在玩家角色盒子上,盒子才是运动的对象。
在主菜单上点击绿色的play运行游戏。
Run the game.
用箭头移动和跳跃,体验一下自己做游戏的成就感吧!
设立惩罚奖励机制
现在我们发现没有奖励和惩罚机制。没有奖惩机制的游戏无法吸引用户,所以我们首先在event sheet中右击空白处
添加global variable 并命名为score 初始值为0
score 即为玩家得分
返回layout 双击空白处建立新的sprite命名为money
copy money并将其放置在任意wall上
现在返回事件列表 新建事件
platform》on collision with》money system》add 10 to》score
我们想让碰到money 后money 消失
在上一条件下添加action
money》destory
双击建立新的sprite 命名为tree 我们想让player吃到tree时health+1
和money一样 copy 后放置在任意wall上
建立新事件system》add to》选取参数
注意 选取health参数时需要将光标上移
选择对象platform后选择如下
再选择add 1 to health
我们再新建一个sprite放置在游戏的最后一个wall上面
当玩家到达这里则表示通关
此处我找了一个门的图案
添加惩罚措施
添加sprite 命名为water
当玩家触碰时health会减1
当health《=0时 游戏会结束
添加事件
使我们的玩家可以死
关于显示文本
首先需要显示玩家的分数和生命值
我们为了让这两个文本不随屏幕移动
需要新建一个置顶图层命名为HUD
调整此图层属性 parallax 0,0 使其不再滚动
在此图层上建立两个文本(和建立sprite步骤基本相同)
更改文本属性 调整字体颜色字体大小
之后添加事件
使每一帧画面中score和health的值都在刷新 且等于对应的变量
注意 选择health变量时和上次叙述的方法相同 (将光标移到上面。。。)
现在还需添加玩家死亡和通关时的弹出文本
首先再建立两个新文本
并将其透明度设置为0 而当其弹出时只要将其的透明度设回100就可以了
设置死亡事件
再设置更改透明度和设置文本内容的事件
设置通关事件
游戏设计到这里就结束啦~
最后附上游戏成果图