python - 这个算法是如何让pygame中的角色跳跃的呢?

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

最佳答案

开始时,Jumpcount 设置为 10。

Jumpcount = 10

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

if Jumpcount >= -10:

NegJumpcount 的“符号”。如果 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 坐标在末尾与开头具有相同的值。

另请参阅How to make a character jump in Pygame? .

关于python - 这个算法是如何让pygame中的角色跳跃的呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65873880/

相关文章:

python - 从 Xpath 查询中获取属性和文本作为列表

python - Ubuntu 上 PIL 的问题

Pygame Surface 被视为一个元组

python - Python 3.4 中的 Pygame 错误

python - 如何使用 django 模板中的列表遍历字典?

python Pandas : adding list of elements in a specific column to find all_elements

python - 如何在我的模板 View python django 中查看 redis json 数据

python - 使用子进程延迟执行命令

Python 访问变量

python - 按空格键退出 Pygame