level 9
二楼网盘
2018年11月30日 13点11分

但是这类脚本的效果往往很差:
抛开别的不说,单看效果,就知道这样肯定是不行的。
这个变量用来储存y值变化(在现在看来,就是循环一次下降的速度)
超级简单对吧?不懂?没关系,来看看效果,你就明白了。
那么接下来要做的,就是画一个地板。。。
效果:
发现问题了吗?小猫是【缓慢】的升上来的,没有达到我们想要的目的。
一定要勾选【运行不刷新】!!!!
那么,看到这里,恭喜你,你已经学会了重力系统了。
超级简单,不是么?但是与前面的脚本结合,这个脚本的功能就显得有些奇怪。
看见了吗?小猫会直接“瞬移”到平台上,这是为什么呢?结合前面的脚本,请自己思考一下。
【注意,这里依旧勾选运行不刷新】
(两个黄色的方块代表猫,黑色的代表地板)
很显然,下一帧,重力系统就会将我们抬到平台表面
你以为这样就结束了?不不不,你还是图【哔——】
换一张图,假设小猫可以翻过一格高的“阶梯”,即如图所示,这个阶梯小猫是可以过的。
按照上面的脚本,我们应该让小猫返回到上一格,但是我们知道小猫是可以跨到一格高的阶梯上的对吧。
这时我们惊奇的发现,小猫不再与地面重叠了,也就是说,【小猫不再【碰到】地面】了,
我们升高了一格,发现:唉,我身子怎么还卡在墙里啊,坏了,这墙我过不去。
新建一个变量,表示你升高了多少。
(注:此处默认极限值是7,超过7就爬不上台阶了)
你的小猫已经“克服残疾”,学会“自己走路”了!
我们之前一直在假设y速度只会是非正数,那么如果y速度变成了正数呢?那么你的y坐标自然就会增加一个正数的值,但这个值会因为【y速度-1】而不断减少,最后重新变为负数,继而下降。
可很显然,这样的话,小猫就会“螺旋升天”:
我们来分析一下问题出现的原因:
但是,这样仅仅解决了不能一直按下上键的问题,而不碰到地面就能跳的问题仍然没有解决:
但是。。怎样才能解决这个问题呢?
然后,只需要在跳跃脚本上修改一下:
最后一个小点需要注意:
跳跃相对于前两节来说,还是比较简单的(指代码实现),但是想要真正理解,就必须扎实地掌握第一节,这就是为什么我说这是重力系统的一个分支了。
我们在前几节的学习中,接触过这个脚本,对吧?
emmm...小猫头顶平台,直接“瞬移”到了平台上。
这个脚本很简单,就是对碰到地面的位置做一个检测,如果碰到地面的时候y速度大于0,那么情况只有一个——你的y坐标在增加。所以你是头碰到了天花板而不是脚碰到了地面。
为啥?我不是都做好程序了吗?
看,这样,作为常量的(y速度>0)(这虽然是一个大于号的表达式,但是在正式编程中,这个表达式是有值的,为1或0,这也就是为啥我说这个表达式是一个常量的原因。啥?你不知道表达式是什么?简单说,所有绿色的三角模块就是表达式)不会改变了,这个bug也就被修复了(再次感叹作者强大的特判能力)