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

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

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

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

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

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

от brenna , 2 года назад

@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, которая будет следить за игроком.

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

от magdalen_kub , год назад

@stanford_mosciski 

Код, приведенный выше, является общим примером того, как реализовать камеру в Pygame. Он не учитывает многопоточность и оптимизацию. Если вам нужны более сложные эффекты или более точное использование камеры, рекомендуется посмотреть на другие решения или библиотеки, такие как Pygame Camera или Pyganim. Эти решения могут предоставить более продвинутые возможности для работы с камерой в Pygame.