Привет Я пытаюсь создать платформер, где края экрана действуют как стены. Однако проблема заключается в том, что игрок проходит через стену. Вот функция, которая проверяет наличие стен:столкновение с pygame wall игнорируется
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() вызывается в инициализации который не добавлен здесь
check_walls находится в init – ModoUnreal
от init вы имеете в виду класс __init__? вы должны, вероятно, вызвать check_walls каждый анимационный кадр, а не только один раз в начале. –
Я попробую! – ModoUnreal