gpt4 book ai didi

python - Pygame - 除非在整个跳跃过程中按住跳跃按钮,否则玩家不会跳跃

转载 作者:太空宇宙 更新时间:2023-11-03 19:06:23 25 4
gpt4 key购买 nike

我的播放器设置为按下空格键时跳跃,
并在释放空格键时将 Y 速度 (yVel) 设置为 0。

这应该会导致我正在寻找的平滑跳跃和下降,
但出于某种奇怪的原因,如果我在整个跳跃过程中没有按住空格键(即当他以 yPos = 469 击中地面时),
我必须按两次空格键才能让他再次跳起来。
有人可以向我解释一下为什么会发生这种情况吗?

我的代码:

class Player:
def __init__(self,screen,image,xPos,yPos,xVel,yVel):
self.xPos = xPos
self.yPos = yPos
self.xVel = xVel
self.yVel = yVel
self.image = image
self.screen = screen

def draw(self):
screen.blit(self.image,(self.xPos,self.yPos))

def update(self):

self.xPos += self.xVel
self.yPos += self.yVel


for event in pygame.event.get():
if event.type == QUIT:
pygame.quit()
sys.exit()
if event.type == KEYDOWN:
if event.key == K_LEFT:
self.xVel = -2
elif event.key == K_RIGHT:
self.xVel = 2
elif event.key == K_SPACE:
if self.yPos == 469:
self.Jump()
elif event.key == K_DOWN:
pass


if event.type == KEYUP:
if event.key == K_LEFT:
self.xVel = 0
elif event.key == K_RIGHT:
self.xVel = 0
elif event.key == K_SPACE:
self.yVel = 0
elif event.key == K_DOWN:
pass


self.playerGravity()



def playerGravity(self):
if self.xPos > 469:
self.xPos = 469
if self.xPos < 0:
self.xPos = 0
if self.yPos > 469:
self.yPos = 469
if self.yPos < 0:
self.yPos = 0
if self.yPos < 469:
self.yVel += 1

print(self.xPos)
print(self.yPos)

def Jump(self):
##for i in range(10):
self.yVel = -20
##break

最佳答案

我想这是你的playerGravity函数。您需要考虑它在做什么,特别是:

  • 这个神奇的数字 469 是什么?为什么要将它与 xPos 和 yPos 进行比较?
  • 这应该实现什么目标? self.yPos < 469: self.yVel += 1

一般来说,您应该编写有意义的函数名称和变量名称。这意味着用描述其目的的函数包装所有这些赋值调用。我知道什么xPos += 1 确实,但我不知道其意图 - 这很容易是一个拼写错误。正确的函数名称( MoveRight(amount) )可以避免这种情况。

您还需要学会查明代码的“错误”位置 - 您检查过 self.yPos 的值吗?线下elif event.key == K_SPACE: ?调试是每个程序员都必须学习的技能。

这可能不是你问题的直接答案,但我更喜欢授人以鱼,而不是授人以鱼......

关于python - Pygame - 除非在整个跳跃过程中按住跳跃按钮,否则玩家不会跳跃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14607682/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com