如何在 Pygame 中让角色跳跃?

时间:2021-01-24 17:38:43

标签: python 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

1 个答案:

答案 0 :(得分:2)

在开始时 Jumpcount 设置为 10。

Jumpcount = 10

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

if Jumpcount >= -10:

NegJumpcount 的“签名”。如果 Jumpcount 大于或等于零,则为 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 坐标在末尾与开头具有相同的值