首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >游戏跳跃问题

游戏跳跃问题
EN

Stack Overflow用户
提问于 2021-04-18 13:50:56
回答 1查看 86关注 0票数 1

我正在通过开发一个平台游戏来学习游戏模块。

我从这个Youtube视频和频道中获得灵感

跳跃行为与问题

我可以处理的事实是,球员不能跳,如果它不是躺在一个平台上。

但我发现,当我同时按左键或右键和跳转键时,的跳转值是应有的值的两倍。

我有一个类Game,它处理主游戏循环和另外两个精灵类PlayerPlatform

Game

在类Game中,我有一个update方法,在这个方法中,我检查平台和播放器之间的冲突。

代码语言:javascript
运行
复制
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类中,只有当player与平台发生冲突时,我才使用冲突和跳转列表:

代码语言:javascript
运行
复制
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"]

你可以找到github上的整个项目代码

我在动画gif上捕捉到了这个问题

  • 当我按两个键时,跳得太高了。

你知道如何解决这个奇怪的行为吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-04-18 14:43:15

问题是,在您的jump方法中,您不检查玩家是否按下跳转按钮:event.key == KEYS[self.player_data["jump"]]

但是,如果任何按钮被按下,跳转按钮被按住了呢?!这意味着,如果您设法按下同一帧上的两个按钮,您将从您的位置减去两次。

若要修复,请检查事件是否为跳转按钮。

代码语言:javascript
运行
复制
def jump(keystate, events, hits):
    for event in events:
        if event.type == pygame.KEYDOWN:
            if event.key == KEYS[self.player_data["jump"]] and hits:
                self.rect.y -= self.player_data["jumpPower"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67149328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档