Как сделать камеру за игроком в pygame?

Пользователь

от stanford_mosciski , в категории: Python , 2 месяца назад

Как сделать камеру за игроком в pygame?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от brenna , 17 дней назад

@stanford_mosciski 

Для того, чтобы сделать камеру в Pygame, которая следует за игроком, можно использовать следующий подход:

  1. Создайте объект класса pygame.Rect, который будет представлять область экрана, которую видит игрок. Назовем его camera.
1
camera = pygame.Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)


  1. При обновлении экрана, отрисовывайте все объекты с учетом координат camera, т.е. отнимайте координаты camera от координат всех объектов, чтобы они отображались в правильном месте на экране.
1
2
screen.blit(background_image, (-camera.x, -camera.y))
player.draw(screen, -camera.x, -camera.y)


  1. При движении игрока, изменяйте координаты camera так, чтобы она следила за ним.
1
2
camera.x = player.rect.centerx - SCREEN_WIDTH/2
camera.y = player.rect.centery - SCREEN_HEIGHT/2


  1. Если игрок достиг границы карты, ограничьте его передвижение, чтобы камера не вышла за пределы карты.
1
2
3
4
5
6
7
8
9
player.update()
if player.rect.left < 0:
    player.rect.left = 0
if player.rect.right > MAP_WIDTH:
    player.rect.right = MAP_WIDTH
if player.rect.top < 0:
    player.rect.top = 0
if player.rect.bottom > MAP_HEIGHT:
    player.rect.bottom = MAP_HEIGHT


  1. Если нужно, чтобы камера следила за несколькими объектами, можно изменить координаты camera так, чтобы она отображала все объекты.
1
2
camera.x = (player1.rect.centerx + player2.rect.centerx) / 2 - SCREEN_WIDTH/2
camera.y = (player1.rect.centery + player2.rect.centery) / 2 - SCREEN_HEIGHT/2


Надеюсь, это поможет вам создать камеру в Pygame, которая будет следить за игроком.