用户:
活动喵查看:20 回复:48 评论:20 创建时间:2019-10-29T14:08:49
点击查看视频版教程
(点击此处关注编程猫B站账号,获取更多视频教程) 运用变量完成二段跳
大家一定都玩过《i wanna》系列吧?里面我们操作的角色,需要突破层层难关才能战胜困难,突破自己。
正如:我们遇到什么困难,都不要怕,微笑着面对他,消除恐惧的最好办法,就是面对恐惧,加油!
不知道大家还对里面的角色有印象不?一个能跳能射击的人物,细心的玩家可能注意到,这个人物能够连续跳跃两次,即进行二段跳。那么就让我们来分析分析二段跳是怎么通过我们的源码积木来实现的吧!
在游戏内如果想令角色跳跃或者二段跳,最简单的就是使用积木内的物理系统,即加入重力,不过有时候物理系统需要考虑的方面太多且易出现问题从而影响游戏体验,我们只是需要简单的跳跃功能,那么该怎么办呢?
这个时候我们可以尝试引入变量来设计一个 “物理引擎”
首先准备好两个变量,为了便于理解,我命名为起跳、跳跃,初始值都为0
起跳变量的作用 : 判断角色是否收到了起跳命令(即用户按下了跳跃键)
跳跃变量的作用:判断角色是否已进行跳跃,从而可以触发二段跳
让我们来看看积木,首先分析一下按键:
想要让角色跳起来,肯定需要我们给它一个指令,我们把空格键设定成跳跃键、跳跃值初始值设定为1,如果从平地进行第一次跳跃,我们就把跳跃的变量值+1,如果要进行二段跳,我们就再把跳跃的变量值+1。
我们这样规定:
当角色在平地——跳跃值=0
角色进行第一次跳跃时——跳跃值=1
角色进行二段跳时——跳跃值=2
小贴士:“保持等待直到放开空格键”,即防止用户按着空格键太久,导致变量一直增加,我们把空格键从按下到放开设计成一个流程,只有完成了这个流程才会使得跳跃的变量值+1
然后我们看看跳跃是如何实现的:(注:这个讲解案例内编程猫的Y坐标为-270)
这个时候,我们来想想,或者同学们自己亲自试试:使劲向上跳。
跳了吗?哈哈,还记得这一过程是怎么样的吗?
蓄力弯腰 → 起跳 → 到达一定高度停止上升 → 开始下落 → 到达平地
大家想想是不是这么一个过程?
我们可以把跳跃这个过程这样理解:
我们以一个很快的速度开始上升,然后我们的上升速度越来越慢,直到无法继续上升,然后开始下落,并且下落速度越来越快,最后我们回到平地。
即:起跳过程中,上升速度会越来越慢直到为0,然后下降速度会从0逐渐增加直到我们下落回到地面。
用数值表示速度,就是数值由大到小至0(上升过程),然后由0逐渐升高(下降)直到结束(落地)。
我们把起跳值设置为20,当跳跃值为1,即开始起跳时,我们就让角色Y坐标不断增加起跳值,每增加一次我们就让起跳值-1,直到最后Y坐标增加为0,即到了我们起跳的最高点;
然后就开始下降准备,我们如果想从高处Y坐标到低处Y坐标,就只要让起跳值变成负数,然后让Y坐标增加这个 “负值” 就可以了。
积木内的跳跃值的判断,是为了检测角色是否有进行二段跳。
起跳值递减递增内我们加入了一个判断:如果跳跃值≠1,即触发了二段跳(因为我们设定了进行二段跳的条件是,跳跃值=2),就退出该循环(即退出当前跳跃)进行二段跳。
小贴士:上升和下降过程中,都会有一个起跳值不断降低过程,所以上升和起跳的重复次数要确保一致。我们在下降的重复执行结束后,加入了一块:将Y坐标设置为-270 的积木,是为了确保结束跳跃后,能让角色与起跳前的位置保持一致。别忘了要把起跳值归0以备下次跳跃。
让我们来分析一下二段跳:
由初始设定我们得知,当起跳值为2时,我们可以让角色进行二段跳。
二段跳顾名思义,即为在一个跳跃基础上,再次进行一次跳跃过程(跳跃的高度看同学们怎样去设计啦)。
当起跳值为2时,同理第一次起跳,我们给Y坐标一个变量从20起,不断减小变量数值的递增过程直到变量为0停下来。
不过此时下降过程,就不是像一段跳那样重复20次就可以了。二段跳时一个关键点:我们是何时进行二段跳?可能是在一段跳的上升时?最高点时?下降时?这时候二段跳上升期的Y坐标是不定的,我们无法得知。
解决这问题,只需加入一个Y坐标的判断即可,因为无论你合适起跳,总会下降的呀,我们只要在下降到一定的Y坐标值,就停止下降的递减循环即可。
我们初始的Y坐标为-270,起跳值为20,故二段跳下落判断我们定位-250。
小贴士:即便你起跳到-269时进行二段跳,增加的20跳值,此时你的Y坐标值为-249,也可以进行下落判断。
当Y坐标为-250时我们停止了循环,有些人就会想:这不还没到初始的Y坐标吗?怎么就停下来了?最后一步归为,为了防止一些小误差,当退出循环后我们就手动设置角色的Y坐标-270。
由于角色最后是下落的,根据我们眼球感受到的角色移动,最后这20的直接移动是完全符合下降的顺畅度,毕竟下降过程就是一个不断加快的过程。
让我们来看看效果:
游戏内的效果:
小贴士:游戏内以及下方的实现效果积木内的编程猫的Y坐标为-183哦
更多相关教程:
【跑酷主题活动教程】step1 人物、背景的移动
https://shequ.codemao.cn/community/201014
【跑酷主题活动教程】step 2 人物的跳跃
https://shequ.codemao.cn/community/201015
【跑酷主题活动教程】step 3 金币、障碍物、生命值
https://shequ.codemao.cn/community/201016
【跑酷主题活动教程】step 4 喵、双倍、加速
https://shequ.codemao.cn/community/201017