这个算法如何使pygame中的字符跳跃?



我一直在看Pygame教程来学习模块,它来到了教练向你展示如何让你的角色跳跃的部分。然而,我发现不可能理解他们写下来的代码,他们也没有很好地解释。

谁能帮我分解下面的代码,这样我就能确切地理解发生了什么?是否有更简单的方法来编写角色的跳跃?请记住,我已经设置了代码,按空格键使该代码激活。

Isjump = False
Jumpcount = 10
#code for spacebar activation here, turns Isjump to True# 
if Jumpcount >= -10:
Neg = 1
if Jumpcount < 0:
Neg = -1
y -= (Jumpcount ** 2) * 0.5 * Neg
Jumpcount -= 1
else:
Isjump = False
Jumpcount = 10

初始Jumpcount设置为10

Jumpcount = 10

跳转运行直到Jumpcount小于或等于-10。因此,一次跳跃正好需要21个周期:

if Jumpcount >= -10:

Neg是"符号"Jumpcount。如果Jumpcount大于等于0,则为1,否则为-1:

Neg = 1
if Jumpcount < 0:
Neg = -1

在每一帧中,玩家的y坐标被二次函数(Jumpcount ** 2) * 0.5改变。

y -= (Jumpcount ** 2) * 0.5 * Neg

由于这一项与Neg相乘,所以当Jumpcount大于0时为正,当Jumpcount为0时为0,否则小于0。
Jumpcount的量大时,y坐标的变化大于量小时。参见21个循环中(Jumpcount ** 2) * 0.5 * Neg的值:

50.0, 40.5, 32.0, 24.5, 18.0, 12.5, 8.0, 4.5, 2.0, 0.5, 0.0, 
-0.5, -2.0, -4.5, -8.0, -12.5, -18.0, -24.5, -32.0, -40.5, -50.0

一开始数值是正的,玩家跳跃。最后,数值是负值,玩家摔倒了。
这些值的和为0。因此,y-坐标在末尾和开头具有相同的值。

参见如何让角色在Pygame中跳跃?

最新更新