跑酷游戏 第二集
本集中我们对上一集中的移动问题进行了优化,并且制作了关卡切换功能。
移动优化
上一集中,我们留下了一些移动方面的问题。首先是连跳问题,角色在空中可以不受限制的跳跃,我们需要解决一下。新建一个私有变量正在跳跃,用来存放角色跳跃的状态。在游戏开始时,因为角色是在天空中掉落的,所以初始化为1。当我们跳跃的时候,同时要判断正在跳跃的值,只有这个值为零的时候才可以进行跳跃。在起跳之后,把这个值设为1。
那么什么时候重置变量的值呢,在我们落地之后。
接下来是对台阶边缘的一些处理。我们在垂直方向上做了站在地面上的处理,在水平方向上也应该有类似的处理。为了完成这个操作,我们新建一个自建积木,命名为移动(步数)步,步数的位置用来代入我们需要移动的距离。
在新的自建积木中,我们移动步数次,每次移动一步,再整合我们原来的移动代码,如果遇到场景就朝反方向移动一步并且重置对应方向的速度,就可以让移动变得平滑。
上面是对垂直移动的优化,我们再对水平方向进行优化,方法是类似的。
之后不要忘了替换我们原来移动部分的代码。
我们再优化一下碰到颜色,用碰到关卡造型来替换。为了完成这个逻辑。首先把背景里的关卡,移动到一个新角色中。然后就可以修改原本的碰到绿色为碰到场景了。
但是这时候我们发现一个问题,我们做一个小的平台在场景里,会发现我们的人物可以头顶着平台,像被吸住了一样。为了解决这个问题,我们来对跳跃的判断再加一些限制,只有当y速度小于零,也就是下落的状态下碰到场景再重置跳跃状态。
关卡切换
接下来我们来完成切换关卡的功能。我们新建一个全局变量场景编号,初始化为1,当接受到我们之后发出的切换场景广播时,就把我们的场景切换到编号对应的造型。
接下来我们创造一个新的场景。我们的场景有个特点,第一关的右侧和第二关的左侧是连接的。我们可以翻转一下关卡,来连接我们的场景。
回到我们人物的代码中,如何判断需要切换关卡?当人物试图越过地图边缘时,我们视为可以切换关卡了。如果人物x坐标大于235(地图的x坐标最大为240),我们就视作人物要走到边缘了,此时我们让场景编号增加1,然后广播切换关卡,再把我们的人物移动到最左边。
同理,对向左移动的任务,我们要把场景编号-1再广播,然后把人物移动到最右侧。
总结
本集中,我们完成了对人物在上一集中的移动问题的优化,还完成了关卡切换的功能。不过在本集当中我们也留下了一部分问题,比如人物挨着墙壁的时候还在跳跃。大家可以思考一下有没有解决问题的办法。