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
有没有更好的方法来检查玩家和墙壁之间的碰撞,请记住墙壁只是屏幕边框而不是精灵。
check_walls() 在 init 中被调用,这里没有添加
我想你的意思是:
def check_walls(self):
if self.rect.right >= WIDTH:
self.speedx = -0.5
if self.rect.left <= 0:
self.speedx = 0.5
还有你在哪里打电话给check_walls?
您好,我正在尝试制作一个屏幕边缘充当墙壁的平台游戏。但是,问题是玩家会穿墙。这是检查墙壁的函数:
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
有没有更好的方法来检查玩家和墙壁之间的碰撞,请记住墙壁只是屏幕边框而不是精灵。 check_walls() 在 init 中被调用,这里没有添加
我想你的意思是:
def check_walls(self):
if self.rect.right >= WIDTH:
self.speedx = -0.5
if self.rect.left <= 0:
self.speedx = 0.5
还有你在哪里打电话给check_walls?