Как закрепить камеру на персонаже в pygame?
import pygame as pg
from level_1 import*
pg.init()
tiles = 30
window=pg.display.set_mode((tiles*50,tiles*30))
pg.display.set_caption('Mario')
mario_walk = 0
class Game_sprite():
def __init__(self, image, x,y , w,h, speed):
self.image=pg.transform.scale(pg.image.load(image),(w,h))
self.w=w
self.h=h
self.speed=speed
self.rect=self.image.get_rect()
self.rect.x=x
self.rect.y=y
self.isJump = False
self.jumpCount=10
def reset(self):
window.blit(self.image,(self.rect.x,self.rect.y))
class Player(Game_sprite):
def control(self):
global mario_walk
keys=pg.key.get_pressed()
if keys[pg.K_SPACE]:
self.isJump = True
if self.isJump is True:
if self.jumpCount >= -10:
if self.jumpCount < 0:
self.rect.y += (self.jumpCount ** 2) // 2
else:
self.rect.y -= (self.jumpCount ** 2) // 2
self.jumpCount -= 1
else:
self.isJump = False
self.jumpCount = 10
if keys[pg.K_d]:
self.rect.x+=self.speed
self.image=pg.transform.scale(pg.image.load(f'images/mario_walk_right/mario_walk-{mario_walk}.png'),(self.w,self.h))
mario_walk+=1
if mario_walk>7:
mario_walk=0
if self.isJump == True:
self.image = pg.transform.scale(
pg.image.load("images/mario_walk_right/mario_walk-4.png"), (self.w, self.h)
)
if keys[pg.K_a] and self.rect.x>0:
self.rect.x-=self.speed
self.image=pg.transform.scale(pg.image.load(f'images/mario_walk_left/mario_walk-{mario_walk}.png'),(self.w,self.h))
mario_walk+=1
if mario_walk>7:
mario_walk=0
if self.isJump == True:
self.image = pg.transform.scale(
pg.image.load("images/mario_walk_left/mario_walk-4.png"), (self.w, self.h)
)
platform = []
for i in range(len(map_list)):
for j in range(len(map_list[i])):
print(map_list[i][j])
if map_list[i][j]=='1':
platform.append(Game_sprite('images/objects/platform.png',j*tiles,i*tiles,tiles,tiles,0))
bg = Game_sprite('images/bg/bg.png', tiles-tiles, tiles-tiles, tiles*50,tiles*30, 0)
mario = Player('images/mario_walk_right/mario_walk-0.png', tiles, tiles*26, tiles*2, tiles*2, 15)
game = True
while game:
pg.time.Clock().tick(120)
for i in pg.event.get():
if i.type==pg.QUIT:
exit()
bg.reset()
mario.reset()
mario.control()
for i in platform:
i.reset()
pg.display.flip()
Источник: Stack Overflow на русском