Pygame character image is floating above ground and wont touch walls when colliding

Viewed 27

I'm building 2D platformer using Pygame, the png files I imported were small but I scaled them to 120x120px causing the rect around the image to be larger so now the player img isn't touching the ground or touching walls before it detects collision.

def horizontal_movement_collision(self):
    player = self.player.sprite
    player.rect.x += player.direction.x * player.speed

    for sprite in self.tiles.sprites():
        if sprite.rect.colliderect(player.rect):
            if player.direction.x < 0:
                player.rect.left = sprite.rect.right
            elif player.direction.x > 0:
                player.rect.right = sprite.rect.left

def vertical_movement_collision(self):
    player = self.player.sprite
    player.apply_gravity()

    for sprite in self.tiles.sprites():
        if sprite.rect.colliderect(player.rect):
            if player.direction.y > 0:
                player.rect.bottom = sprite.rect.top
                player.direction.y = 0
                player.on_ground = True
            elif player.direction.y < 0:
                player.rect.top = sprite.rect.bottom
                player.direction.y = 0
                player.on_ceiling = True

    if player.on_ground and player.direction.y < 0 or player.direction.y > 1:
        player.on_ground = False
    if player.on_ceiling and player.direction.y > 0:
        player.on_ceiling = False

pygame_screen_window

0 Answers
Related