【发布时间】:2021-04-18 13:50:56
【问题描述】:
我正在通过开发平台游戏来学习 pygame 模块。
我从这个 Youtube 视频和频道中获得灵感
跳跃行为和问题
我可以处理玩家如果不在平台上就不能跳跃。
但我发现当我同时按下左键或右键和跳转键 跳转值是两倍它应该是什么。
我有一个类Game 处理主游戏循环和另外两个精灵类Player 和Platform。
类Game
在Game 类中,我有一个方法update,我在其中检查platforms 和player 之间的冲突。
class Game:
# game main loop
def __init__(self):
# ...
self.hits = None
# ...
def update(self):
# update all sprites in the sprites group
self.all_sprites.update(self.all_events, self.hits)
# check collision between player and platforms
self.hits = pygame.sprite.spritecollide(self.player, self.platforms, False)
if self.hits:
self.player.rect.bottom = self.hits[0].rect.top
类Player
在Player类中,我使用碰撞列表,并且仅当玩家与平台发生碰撞时才跳转:
class Player(pygame.sprite.Sprite):
# player class
def __init__(self):
#...
def update(self, events, hits):
keystate = pygame.key.get_pressed()
self.move_player(keystate)
self.apply_gravity()
self.jump(keystate, events, hits)
def jump(keystate, events, hits):
for event in events:
if event.type == pygame.KEYDOWN:
if keystate[KEYS[self.player_data["jump"]]] and hits:
self.rect.y -= self.player_data["jumpPower"]
您可以找到whole project code on github。
我在animated gif 上捕获了这个问题:
- 当我同时按下两个键时,跳跃太高了
你知道如何解决这种奇怪的行为吗?
【问题讨论】:
标签: python pygame event-handling keypress