繁体   English   中英

pygame墙碰撞被忽略

[英]pygame wall collision is ignored

嗨,我正在尝试制作一个平台游戏,其中屏幕的边缘充当墙壁。 但是,问题是玩家穿过了墙。 这是检查墙壁的功能:

def check_walls(self):
    if self.rect.right >= WIDTH:
        self.speedx = 0.5
    if self.rect.left >= WIDTH - WIDTH:
        self.speedx = -0.5

这是使玩家行动的代码,我认为这实际上是导致问题的代码,但我不知道如何解决:

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

有没有更好的方法来检查播放器和墙壁之间的碰撞,请记住墙壁只是屏幕边框,而不是精灵。 另外,在未在此处添加的init中调用了check_walls()。

我认为您打算这样做:

def check_walls(self):
    if self.rect.right >= WIDTH:
        self.speedx = -0.5
    if self.rect.left <= 0:
        self.speedx = 0.5

你也叫check_walls在哪里?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM