Uzziniet, kā modelēt kameru, kas var panoramēt jūsu spēļu pasauli, lai pievienotu reālismu un funkcionalitāti.

Viena kopīga iezīme, ko atradīsit daudzās spēlēs, ir ritināma kamera, kas seko jums, pārvietojoties pa spēļu pasauli. Šis efekts var pievienot jūsu spēlei dziļumu un reālismu un uzlabot kopējo spēles pieredzi.

Ir daudz dažādu veidu, kā ieviest ritināšanas kameru PyGame, tāpēc pārliecinieties, ka saprotat to atšķirības.

Vienkāršas spēles izveide

Pirms sākt, instalējiet pip savā ierīcē un izmantojiet tālāk norādīto komandu, lai instalētu PyGame moduli:

pip instalēt pygame

Tagad jūs varat izveidot vienkāršu spēli ar spēlētāja taisnstūri un divām statiskām platformām. Spēlētājs var pārvietoties pa kreisi un pa labi, izmantojot bulttaustiņus.

Šeit varat atrast pilnu projekta kodu GitHub repo.

Sāciet ar pygame moduļa importēšanu. Pēc tam inicializējiet to un izveidojiet spēles logu, izmantojot pygame.display.set_mode() funkciju. Pēc tam iestatiet loga parakstu un izveidojiet pulksteņa objekts, lai pārvaldītu kadru ātrumu.

instagram viewer
imports pygame

pygame.init()

WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600

ekrāns = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))

pygame.display.set_caption("Mana vienkāršā spēle")

pulkstenis = pygame.time. Pulkstenis ()

BACKGROUND_COLOR = (255, 255, 255)

Pēc tam iestatiet atskaņotāju un statiskās platformas. Nosakiet atskaņotāja izmēru un tā sākotnējo pozīciju.

PLAYER_WIDTH = 50
SPĒLĒTĀJA_AUGSTUMS = 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)

taisnstūris_1 = pygame. Rect(200, 200, 100, 100)
taisnstūris_2 = spēle. Rect(500, 300, 150, 50)

Pēc tam izveidojiet spēles cilpu, kas apstrādā notikumus un atjaunina ekrānu. Ciklā pārbaudiet notikumus, piemēram, spēles izslēgšanu vai spēlētāja pārvietošanu, izmantojot bulttaustiņus.

kamērTaisnība:
# Apstrādājiet notikumus
priekš notikumu iekšā pygame.event.get():
ja event.type == pygame. IZIET:
pygame.quit()
atmest ()

# Uzzīmējiet fonu
screen.fill (BACKGROUND_COLOR)

# Uzzīmējiet statiskos taisnstūrus
pygame.draw.rect (ekrāns, RECTANGLE_COLOR_1, rectangle_1)
pygame.draw.rect (ekrāns, RECTANGLE_COLOR_2, rectangle_2)

# Uzzīmējiet atskaņotāju
player_rect = pygame. Taisns (player_x, player_y, PLAYER_WIDTH,
PLAYER_HEIGHT)

pygame.draw.rect (ekrāns, (0, 0, 0), player_rekt)

# Atjauniniet displeju
pygame.display.update()

# Ierobežojiet kadru ātrumu
pulkstenis.tick(30)

Kameras iestatīšana

Tagad, kad jums ir vienkārša spēle ar spēlētāja taisnstūri un divām statiskām platformām, varat sākt strādāt ar kameru. Programmā PyGame kamera būtībā ir tikai nobīde, kas iedarbojas uz visiem objektiem, kurus zīmējat uz ekrāna. Tas nozīmē, ka, pārvietojot kameru pa kreisi, viss ekrānā redzamais tiks pārvietots pa labi.

Lai iestatītu kameru, vispirms ir jādefinē mainīgais, kas notur kameras X nobīdi. Izsauciet šo mainīgo camera_offset_x un inicializējiet to uz 0.

# Iestatiet kameras nobīdi
camera_offset_x = 0

Pēc tam atjauniniet visu ekrānā zīmēto objektu pozīcijas, lai ņemtu vērā kameras nobīdi. To var izdarīt, pievienojot camera_offset_x vērtību katra objekta X pozīcijai. Piemēram, jūs varat atjaunināt spēlētāja pozīciju šādi:

# Uzzīmējiet atskaņotāju
player_rect = pygame. Taisns (player_x + camera_offset_x, player_y, PLAYER_WIDTH,
PLAYER_HEIGHT)

pygame.draw.rect (ekrāns, (0, 0, 0), player_rekt)

Līdzīgi varat atjaunināt statisko platformu pozīcijas šādi:

# Uzzīmējiet statiskos taisnstūrus
rectangle_1_draw_pos = taisnstūris_1.pārvietot (camera_offset_x, 0)
pygame.draw.rect (ekrāns, RECTANGLE_COLOR_1, rectangle_1_draw_pos)

rectangle_2_draw_pos = taisnstūris_2.pārvietot (camera_offset_x, 0)
pygame.draw.rect (ekrāns, RECTANGLE_COLOR_2, rectangle_2_draw_pos)

Kameras pārvietošana ar tastatūras ieejām

Tagad, kad kamera ir iestatīta, varat sākt to pārvietot. Viens veids, kā to izdarīt, ir pārvietot kameru, reaģējot uz tastatūras ievadi. Piemēram, varat pārvietot kameru pa kreisi, kad atskaņotājs nospiež kreiso bulttaustiņu.

Lai to izdarītu, notikumu cilpā, kas apstrādā tastatūras ievades, pievienojiet šādu kodu:

ja event.type == pygame. KEYDOWN:
ja event.key == pygame. K_LEFT:
camera_offset_x -= PLAYER_SPEED
elifs event.key == pygame. K_RIGHT:
camera_offset_x += PLAYER_SPEED

Vēl viens veids ir mainīt atskaņotāja x koordinātu, nospiežot tastatūru, un pēc tam atjaunināt kameras nobīdi. To var īstenot šādi:

# Apstrādājiet notikumus
priekš notikumu iekšā pygame.event.get():
ja event.type == pygame. IZIET:
pygame.quit()
atmest ()

ja event.type == pygame. KEYDOWN:
ja event.key == pygame. K_LEFT:
player_x -= PLAYER_SPEED
elifs event.key == pygame. K_RIGHT:
player_x += PLAYER_SPEED

Pēc tam varat atjaunināt kameras nobīdi attiecībā pret atskaņotāja x koordinātu šādi:

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

Kameras pārvietošana, izmantojot peles ievadi

Vēl viens veids, kā pārvietot kameru, ir izmantot peli. Varat ļaut atskaņotājam vilkt ekrānu, noklikšķinot un velkot peli.

Lai to izdarītu, izsekojiet peles pozīciju, kad atskaņotājs nospiež peles kreiso pogu. Kad viņi pārvieto peli, atjauniniet spēlētāja x koordinātu. Tam vajadzētu mainīties par atšķirību starp pašreizējo peles pozīciju un sākotnējo izsekoto pozīciju, mouse_start_pos.

# Apstrādājiet notikumus
priekš notikumu iekšā pygame.event.get():
ja event.type == pygame. IZIET:
pygame.quit()
atmest ()

ja event.type == pygame. PELES POGA UZ LEJU:
ja notikums.poga == 1:
mouse_start_pos = pygame.mouse.get_pos()

ja event.type == pygame. PELES KUSTĪBA:
ja pygame.mouse.get_pressed()[0]:
mouse_current_pos = pygame.mouse.get_pos()
mouse_offset_x = peles_pašreizējā_pozīcija[0] - peles_sākuma_pozīcija[0]
player_x -= peles_nobīde_x
mouse_start_pos = mouse_current_pos

Papildu kameras funkciju pievienošana

Papildus ritināšanas kameras efektam varat pievienot vairākas citas ar kameru saistītas funkcijas, lai uzlabotu spēles pieredzi. Viena no šādām funkcijām ir tālummaiņas kameras efekts, kas ļauj spēlētājam tuvināt vai tālināt spēļu pasauli. Šo efektu var panākt, mainot spēles loga izmēru un mērogojot ekrānā uzzīmētos objektus.

Lai to izdarītu, definējiet tālummaiņas mainīgo, kas saglabās pašreizējo spēles tālummaiņas līmeni. Iestatiet tā sākotnējo vērtību uz 1,0, kas nozīmē, ka nav tālummaiņas. Pēc tam definējiet funkciju, kas aprēķinās objekta mērogoto izmēru, pamatojoties uz pašreizējo tālummaiņas līmeni.

tālummaiņa = 1.0

defget_scaled_size(Izmērs):
atgriezties int (izmērs * tālummaiņa)

Pēc tam atjauniniet ekrānā uzzīmēto objektu pozīcijas un izmērus, izmantojot get_scaled_size funkciju. Piemēram, jūs varat atjaunināt spēlētāja pozīciju un izmēru šādi:

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

Līdzīgi atjauniniet statisko platformu pozīcijas un izmērus šādi:

rectangle_1_draw_pos = pygame. Rect(
get_scaled_size (taisnstūris_1.x + camera_offset_x),
get_scaled_size (taisnstūris_1.y),
get_scaled_size (taisnstūris_1.width),
get_scaled_size (taisnstūris_1.augstums)
)

pygame.draw.rect (ekrāns, RECTANGLE_COLOR_1, rectangle_1_draw_pos)

rectangle_2_draw_pos = pygame. Rect(
get_scaled_size (taisnstūris_2.x + camera_offset_x),
get_scaled_size (taisnstūris_2.y),
get_scaled_size (taisnstūris_2.width),
get_scaled_size (taisnstūris_2.augstums)
)

pygame.draw.rect (ekrāns, RECTANGLE_COLOR_2, rectangle_2_draw_pos)

Palieliniet vai samaziniet tālummaiņas līmeni par 0,1, kad atskaņotājs nospiež = vai - taustiņu, attiecīgi. Iestatiet jauno spēles loga izmēru, pamatojoties uz pašreizējo tālummaiņas līmeni. Lai to izdarītu, notikumu cilpā, kas apstrādā tastatūras ievades, pievienojiet šādu kodu:

ja event.type == pygame. KEYDOWN:
ja event.key == pygame. K_EQUALS:
tālummaiņa += 0.1

ekrāns = pygame.display.set_mode((
int (WINDOW_WIDTH * tālummaiņa),
int (WINDOW_HEIGHT * tālummaiņa)
))
elifs event.key == pygame. K_MINUSS:
tālummaiņa -= 0.1

ja tālummaiņa < 0.1:
tālummaiņa = 0.1

ekrāns = pygame.display.set_mode((
int (WINDOW_WIDTH * tālummaiņa),
int (WINDOW_HEIGHT * tālummaiņa)
))

Izmantojot iepriekš minēto kodu, jūs mūsu PyGame spēlei esat veiksmīgi pievienojis tālummaiņas kameras efektu. Apvienojot šo funkciju ar ritināšanas kameras efektu, varat izveidot dinamisku un aizraujošu spēles pieredzi.

Spēles uzlabošana ar kameras kustībām

Ritināmas kameras pievienošana PyGame spēlei ne tikai uzlabo vizuālo pieredzi, bet arī uzlabo spēli. Tas ļauj spēlētājam redzēt vairāk spēles pasaules, nodrošinot viņiem labāku izpratni par apkārtni un atvieglojot orientēšanos.

Varat arī izmantot kameras kustību, lai izveidotu īpašus efektus, piemēram, tuvināšanu un tālināšanu vai ekrāna kratīšanu, lai imitētu sprādzienus vai zemestrīces.