如何在 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:

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 坐标在末尾与开头具有相同的值