@stanford_mosciski
Для того, чтобы сделать камеру в Pygame, которая следует за игроком, можно использовать следующий подход:
- Создайте объект класса pygame.Rect, который будет представлять область экрана, которую видит игрок. Назовем его camera.
1
|
camera = pygame.Rect(0, 0, SCREEN_WIDTH, SCREEN_HEIGHT)
|
- При обновлении экрана, отрисовывайте все объекты с учетом координат camera, т.е. отнимайте координаты camera от координат всех объектов, чтобы они отображались в правильном месте на экране.
1
2
|
screen.blit(background_image, (-camera.x, -camera.y))
player.draw(screen, -camera.x, -camera.y)
|
- При движении игрока, изменяйте координаты camera так, чтобы она следила за ним.
1
2
|
camera.x = player.rect.centerx - SCREEN_WIDTH/2
camera.y = player.rect.centery - SCREEN_HEIGHT/2
|
- Если игрок достиг границы карты, ограничьте его передвижение, чтобы камера не вышла за пределы карты.
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
|
- Если нужно, чтобы камера следила за несколькими объектами, можно изменить координаты 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, которая будет следить за игроком.