Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.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 我们如何让我们的玩家在游戏中跳跃_Python_Pygame - Fatal编程技术网

Python 我们如何让我们的玩家在游戏中跳跃

Python 我们如何让我们的玩家在游戏中跳跃,python,pygame,Python,Pygame,我想让玩家跳跃大约4 Y,但无法做到。 请告诉我怎么做,如果告诉任何函数,请告诉我它是什么以及如何做的,因为我是pygame新手。您可以在地板上使用类似的变量。如果它在地板上(使用碰撞),那么它允许程序开始跳跃(使用另一个变量,如y\u speed。我通常让玩家这样跳跃: y\u速度=0 在地板上=错误 #主回路 如果在地下: 如果pygame.key.get_按下()[K_空格]: y_速度=-40#如果按下空格,则开始跳跃 #设置为使用的值,但应根据帧速率移动 如果y#U速度>-40#速度

我想让玩家跳跃大约4 Y,但无法做到。
请告诉我怎么做,如果告诉任何函数,请告诉我它是什么以及如何做的,因为我是pygame新手。

您可以在地板上使用类似
的变量。如果它在地板上(使用碰撞),那么它允许程序开始跳跃(使用另一个变量,如
y\u speed
。我通常让玩家这样跳跃:

y\u速度=0
在地板上=错误
#主回路
如果在地下:
如果pygame.key.get_按下()[K_空格]:
y_速度=-40#如果按下空格,则开始跳跃
#设置为使用的值,但应根据帧速率移动
如果y#U速度>-40#速度限制
y_速度+=1#改变速度,使抛物线形状下降
player.y+=y_速度


另外,你可以让玩家像这样跳跃,这也可以做同样的工作。

当空格被按下时,你必须让它“断开”所以,连续的空格键不会增加y坐标。你还需要确保一旦达到某个高度,y坐标就会减少,而且我非常确定pygame的大部分教程都涵盖了跳跃机制。你到目前为止做了哪些尝试?请参阅不要放垃圾,添加更多细节或重新措辞。小心,您导入pygame两次:
import pygame
从pygame导入*
同时,当您向上跳时,
y
值会减小,但在您的代码中,当按下空格时,玩家会向下跳。链接问题的答案使用二次公式:
y-=(Jumpcount**2)*0.5*Neg
。因此我认为它是平滑的。请注意,计算每个帧的位置就足够了。在任何情况下,图形中的直线都不代表链接答案中生成的曲线。
import pygame
import sys
from pygame import *
from pygame.locals import RESIZABLE

pygame.init()

WINDOW_SIZE = (800, 600)
screen = pygame.display.set_mode(WINDOW_SIZE, RESIZABLE, 32)

player_img = pygame.image.load('ClipartKey_738895_adobespark.png')
player_X = 130
player_Y = 500
player_change_X=0

def player():
    screen.blit(player_img, (player_X, player_Y))

running = True
while running:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            running = False
            sys.exit()

        if event.type == KEYDOWN:
            if event.key == K_RIGHT:
                player_change_X = 0.3
            if event.key == K_LEFT:
                player_change_X = -0.3
            if event.key == K_SPACE:
                player_Y += 40
        elif event.type == KEYUP:
            if event.key == K_RIGHT:
                player_change_X = 0
            if event.key == K_LEFT:
                player_change_X = 0

    screen.fill((0, 200, 255))
    player()
    player_X += player_change_X

    pygame.display.update()