Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在Pygame中使角色跳跃?_Python_Pygame - Fatal编程技术网

Python 如何在Pygame中使角色跳跃?

Python 如何在Pygame中使角色跳跃?,python,pygame,Python,Pygame,我一直在看Pygame教程来学习这个模块,到了讲师向您展示如何让角色跳跃的部分。然而,我发现不可能理解他们写下的代码,而且他们没有很好地解释 有人能帮我把下面的代码分解一下,让我确切地了解发生了什么吗?还有没有一种更简单的方法来编码一个字符的跳转?请记住,我已经将代码设置为按空格键激活此代码的位置 Isjump = False Jumpcount = 10 #code for spacebar activation here, turns Isjump to True# if Jumpco

我一直在看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
Isjump=False
跳数=10
#这里的空格键激活代码,将Isjump变为True#
如果跳线计数>=-10:
负=1
如果跳线计数<0:
负=-1
y-=(跳线计数**2)*0.5*负
跳转计数-=1
其他:
Isjump=False
跳数=10

在启动时,跳数设置为10

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

如果跳线计数>=-10:
Neg
Jumpcount
的“符号”。如果
Jumpcount
大于或等于零,则为1;否则为-1:

Neg=1
如果跳线计数<0:
负=-1
在每一帧中,玩家的
y
坐标由二次函数
(跳跃计数**2)*0.5更改

y-=(跳线计数**2)*0.5*Neg
由于该项乘以
Neg
,如果
Jumpcount
大于0,则为正;如果
Jumpcount
为0,则为0,否则小于0。
Jumpcount
的数量较大时,
y
坐标的变化大于该数量较小时的变化。参见21个循环中
(跳线计数**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
-坐标在末端的值与开始时的值相同

为了使跳跃可信,您必须对加速/减速进行建模,否则它不会“看起来正确”。因此,虽然你可以通过线性转换来更简单地建模,但它看起来真的很奇怪。@JaredSmith这是YouTube教程的代码,几乎每个初学者都会用到它。当然,这在物理上是不正确的。但这是一个很好的效果,对学习Python也不错。@Rabbid76我不是在批评代码,我是在试图解释明显的复杂性是建模(以有限的方式)加速和减速。“你当然解释得更好了。”贾雷德史密斯,我道歉。我不是有意批评你的。我只是想认识到,需要从一个想学习Python的初学者的角度来阅读代码。非常感谢!那就更有意义了@凯伦伍德谢谢你。不客气。