Naučite kako modelirati kameru koja se može pomicati kroz vaš svijet igre kako biste dodali realizam i funkcionalnost.

Jedna uobičajena značajka koju ćete pronaći u mnogim igrama je pomična kamera koja vas prati dok se krećete svijetom igre. Ovaj efekt može dodati dubinu i realističnost vašoj igri i poboljšati cjelokupno iskustvo igranja.

Postoji mnogo različitih načina za implementaciju kamere za pomicanje u PyGameu, pa se pobrinite da razumijete njihove razlike.

Stvaranje jednostavne igre

Prije početka, instalirajte pip na svoj uređaj i koristite donju naredbu za instaliranje modula PyGame:

pip instaliraj pygame

Sada možete stvoriti jednostavnu igru ​​s pravokutnikom igrača i dvije statične platforme. Igrač se može pomicati lijevo i desno pomoću tipki sa strelicama.

Ovdje možete pronaći potpuni kod za projekt GitHub repo.

Započnite s uvozom modula pygame. Zatim ga inicijalizirajte i stvorite prozor igre pomoću pygame.display.set_mode() funkcija. Zatim postavite naslov prozora i stvorite objekt sata za upravljanje brzinom sličica u sekundi.

instagram viewer
uvoz pygame

pygame.init()

WINDOW_WIDTH = 800
VISINA_PROZORA = 600

zaslon = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))

pygame.display.set_caption("Moja jednostavna igra")

sat = pygame.vrijeme. Sat()

BACKGROUND_COLOR = (255, 255, 255)

Zatim postavite igrač i statične platforme. Odredite veličinu igrača i njegovu početnu poziciju.

PLAYER_WIDTH = 50
PLAYER_HEIGHT = 50

player_x = WINDOW_WIDTH // 2 - PLAYER_WIDTH // 2
player_y = WINDOW_HEIGHT - PLAYER_HEIGHT - 20

PLAYER_SPEED = 10

RECTANGLE_COLOR_1 = (255, 0, 0)
RECTANGLE_COLOR_2 = (0, 0, 255)

pravokutnik_1 = pygame. Pravo(200, 200, 100, 100)
pravokutnik_2 = pygame. Pravo(500, 300, 150, 50)

Zatim stvorite petlju igre koja obrađuje događaje i ažurira zaslon. U petlji provjerite događaje kao što je napuštanje igre ili pomicanje igrača pomoću tipki sa strelicama.

dokPravi:
# Rukovanje događajima
za događaj u pygame.event.get():
ako event.type == pygame. PRESTATI:
pygame.quit()
prestati()

# Nacrtajte pozadinu
screen.fill (BACKGROUND_COLOR)

# Nacrtajte statične pravokutnike
pygame.draw.rect (zaslon, RECTANGLE_COLOR_1, pravokutnik_1)
pygame.draw.rect (zaslon, RECTANGLE_COLOR_2, pravokutnik_2)

# Nacrtajte igrača
player_rect = pygame. Rect (player_x, player_y, PLAYER_WIDTH,
PLAYER_HEIGHT)

pygame.draw.rect (zaslon, (0, 0, 0), player_rect)

# Ažurirajte zaslon
pygame.display.update()

# Ograničite broj sličica u sekundi
clock.tick(30)

Postavljanje kamere

Sada kada imate jednostavnu igru ​​s pravokutnikom igrača i dvije statične platforme, možete početi raditi na kameri. U PyGameu, kamera je u biti samo pomak koji djeluje na sve objekte koje nacrtate na ekranu. To znači da ako pomaknete kameru ulijevo, sve na ekranu će se činiti pomaknuto udesno.

Da biste postavili kameru, najprije trebate definirati varijablu koja će držati X pomak kamere. Nazovite ovu varijablu pomak_kamere_x i inicijalizirati na 0.

# Postavite pomak kamere
pomak_kamere_x = 0

Zatim ažurirajte položaje svih objekata koje crtate na zaslonu kako biste uzeli u obzir pomak kamere. To možete učiniti dodavanjem pomak_kamere_x vrijednost X položaja svakog objekta. Na primjer, možete ažurirati poziciju igrača ovako:

# Nacrtajte igrača
player_rect = pygame. Prav (player_x + camera_offset_x, player_y, PLAYER_WIDTH,
PLAYER_HEIGHT)

pygame.draw.rect (zaslon, (0, 0, 0), player_rect)

Slično, možete ažurirati položaje statičkih platformi na sljedeći način:

# Nacrtajte statične pravokutnike
rectangle_1_draw_pos = rectangle_1.move (camera_offset_x, 0)
pygame.draw.rect (zaslon, RECTANGLE_COLOR_1, rectangle_1_draw_pos)

rectangle_2_draw_pos = rectangle_2.move (camera_offset_x, 0)
pygame.draw.rect (zaslon, RECTANGLE_COLOR_2, rectangle_2_draw_pos)

Pomicanje kamere pomoću unosa s tipkovnice

Sada kada ste postavili kameru, možete je početi pomicati. Jedan od načina da to učinite je pomicanje kamere kao odgovor na unose s tipkovnice. Na primjer, možete pomaknuti kameru ulijevo kada igrač pritisne tipku sa lijevom strelicom.

Da biste to učinili, dodajte sljedeći kod unutar petlje događaja koja upravlja unosima tipkovnice:

ako event.type == pygame. KEYDOWN:
ako event.key == pygame. K_LIJEVO:
camera_offset_x -= PLAYER_SPEED
elif event.key == pygame. K_DESNO:
camera_offset_x += PLAYER_SPEED

Drugi način je promijeniti x koordinatu igrača na tipkovnici i zatim ažurirati pomak kamere. Ovo možete implementirati ovako:

# Rukovanje događajima
za događaj u pygame.event.get():
ako event.type == pygame. PRESTATI:
pygame.quit()
prestati()

ako event.type == pygame. KEYDOWN:
ako event.key == pygame. K_LIJEVO:
igrač_x -= BRZINA_IGRAČA
elif event.key == pygame. K_DESNO:
igrač_x += PLAYER_SPEED

Zatim možete ažurirati pomak kamere u odnosu na x koordinatu igrača na sljedeći način:

camera_offset_x = WINDOW_WIDTH // 2 - player_x - PLAYER_WIDTH // 2

Pomicanje kamere pomoću unosa mišem

Drugi način pomicanja kamere je korištenje miša. Možete dopustiti igraču da povlači zaslon klikanjem i povlačenjem miša.

Da biste to učinili, pratite položaj miša kada igrač pritisne lijevu tipku miša. Kada pomaknu miš, ažurirajte x koordinatu igrača. Trebao bi se promijeniti za razliku između trenutnog položaja miša i početnog položaja koji ste pratili, mouse_start_pos.

# Rukovanje događajima
za događaj u pygame.event.get():
ako event.type == pygame. PRESTATI:
pygame.quit()
prestati()

ako event.type == pygame. MOUSEBTONDOWN:
ako event.button == 1:
mouse_start_pos = pygame.mouse.get_pos()

ako event.type == pygame. MOUSEMOTION:
ako pygame.mouse.get_pressed()[0]:
mouse_current_pos = pygame.mouse.get_pos()
pomak_miša_x = trenutni_položaj_miša[0] - mouse_start_pos[0]
igrač_x -= pomak_miša_x
mouse_start_pos = trenutni_položaj_miša

Dodavanje više značajki kamere

Osim efekta kamere za pomicanje, možete dodati nekoliko drugih značajki povezanih s kamerom kako biste poboljšali iskustvo igranja. Jedna takva značajka je efekt kamere za zumiranje koji igraču omogućuje zumiranje u ili udaljavanju svijeta igre. Ovaj efekt možete postići promjenom veličine prozora igre i skaliranjem objekata nacrtanih na ekranu.

Da biste to učinili, definirajte varijablu zumiranja koja će pohraniti trenutnu razinu zumiranja igre. Postavite njegovu početnu vrijednost na 1,0, što predstavlja nedostatak zumiranja. Zatim definirajte funkciju koja će izračunati skaliranu veličinu objekta na temelju trenutne razine zumiranja.

zumiranje = 1.0

defget_scaled_size(veličina):
povratak int (veličina * zum)

Zatim ažurirajte položaje i veličine objekata nacrtanih na zaslonu pomoću get_scaled_size funkcija. Na primjer, možete ažurirati položaj i veličinu igrača na sljedeći način:

player_rect = pygame. Pravo(
get_scaled_size (player_x + camera_offset_x),
get_scaled_size (player_y),
get_scaled_size (PLAYER_WIDTH),
get_scaled_size (PLAYER_HEIGHT)
)

Slično ažurirajte položaje i veličine statičkih platformi kako slijedi:

rectangle_1_draw_pos = pygame. Pravo(
get_scaled_size (rectangle_1.x + camera_offset_x),
get_scaled_size (rectangle_1.y),
get_scaled_size (rectangle_1.width),
get_scaled_size (rectangle_1.height)
)

pygame.draw.rect (zaslon, RECTANGLE_COLOR_1, rectangle_1_draw_pos)

rectangle_2_draw_pos = pygame. Pravo(
get_scaled_size (rectangle_2.x + camera_offset_x),
get_scaled_size (rectangle_2.y),
get_scaled_size (rectangle_2.width),
get_scaled_size (pravokutnik_2.visina)
)

pygame.draw.rect (zaslon, RECTANGLE_COLOR_2, rectangle_2_draw_pos)

Povećajte ili smanjite razinu zumiranja za 0,1 kada igrač pritisne = ili - ključ, odnosno. Postavite novu veličinu prozora igre na temelju trenutne razine zumiranja. Da biste to učinili, dodajte sljedeći kod unutar petlje događaja koja upravlja unosima tipkovnice:

ako event.type == pygame. KEYDOWN:
ako event.key == pygame. K_JEDNAKO:
zumiranje += 0.1

zaslon = pygame.display.set_mode((
int (WINDOW_WIDTH * zum),
int (WINDOW_HEIGHT * zumiranje)
))
elif event.key == pygame. K_MINUS:
zumirati -= 0.1

ako zumirati < 0.1:
zumiranje = 0.1

zaslon = pygame.display.set_mode((
int (WINDOW_WIDTH * zum),
int (WINDOW_HEIGHT * zumiranje)
))

S gornjim kodom uspješno ste dodali efekt zumirajuće kamere u našu igru ​​PyGame. Kombinacijom ove značajke s efektom pomicanja kamere možete stvoriti dinamično i privlačno iskustvo igre.

Poboljšanje igranja s pokretima kamere

Dodavanje kamere za pomicanje igri PyGame ne samo da poboljšava vizualni doživljaj, već i poboljšava igranje. Omogućuje igraču da vidi više svijeta igre, pružajući mu bolje razumijevanje okoline i olakšavajući navigaciju.

Također možete koristiti kretanje kamere za stvaranje posebnih efekata kao što su povećavanje i smanjivanje ili podrhtavanje zaslona za simuliranje eksplozija ili potresa.