首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >游戏墙碰撞被忽略。

游戏墙碰撞被忽略。
EN

Stack Overflow用户
提问于 2015-12-06 14:48:34
回答 1查看 74关注 0票数 0

嗨,我正在尝试做一个制版机,在那里屏幕的边缘充当墙壁。然而,问题是球员穿过了墙。下面是检查墙壁的函数:

代码语言:javascript
复制
def check_walls(self):
    if self.rect.right >= WIDTH:
        self.speedx = 0.5
    if self.rect.left >= WIDTH - WIDTH:
        self.speedx = -0.5

这是让玩家移动的代码,我认为这是导致问题的代码,但我不知道如何修复它:

代码语言:javascript
复制
def update(self):
    self.speedx = 0
    # The speedy is above in the __init__ for the player jumping movement
    self.onGround = True

    keystate = pygame.key.get_pressed()

    if self.rect.y <= GROUND - BLOCK_DIM:
        self.speedy += self.gravity
        self.onGround = False
    elif self.rect.y >= GROUND - BLOCK_DIM:
        self.speedy = 0
        self.onGround = True


    if keystate[pygame.K_LEFT]:
        self.speedx = -5
    if keystate[pygame.K_RIGHT]:
        self.speedx = 5
    if keystate[pygame.K_UP]:
        self.jump()
    self.rect.x += self.speedx
    self.rect.y += self.speedy

是否有更好的方法来检查玩家和墙壁之间的碰撞,记住墙壁只是屏幕边框,而不是精灵。另外,check_walls()也是在init中调用的,这里没有添加

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-06 15:22:57

我觉得你想做的是:

代码语言:javascript
复制
def check_walls(self):
    if self.rect.right >= WIDTH:
        self.speedx = -0.5
    if self.rect.left <= 0:
        self.speedx = 0.5

另外,你在哪里叫check_walls?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34118679

复制
相关文章

相似问题

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