这个算法是如何让角色在pyGame中跳跃的呢?

2022-02-22 00:00:00 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的签名(&Q;)。如果Jumpcount大于或等于零,则为1,否则为-1:

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

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

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

此项乘以NegJumpcount大于0则为正,Jumpcount为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?。

相关文章