Naučite se modelirati kamero, ki se lahko pomika po vašem svetu igre in tako doda pristnost in funkcionalnost.
Ena skupna značilnost, ki jo boste našli v mnogih igrah, je drsna kamera, ki vas spremlja, ko se premikate po svetu igre. Ta učinek lahko vaši igri doda globino in realističnost ter izboljša celotno izkušnjo igranja.
Obstaja veliko različnih načinov za implementacijo drsne kamere v PyGame, zato se prepričajte, da razumete njihove razlike.
Ustvarjanje preproste igre
Pred začetkom, namestite pip na svojo napravo in uporabite spodnji ukaz za namestitev modula PyGame:
pip namestite pygame
Zdaj lahko ustvarite preprosto igro s pravokotnikom igralca in dvema statičnima platformama. Igralec se lahko premika levo in desno s puščičnimi tipkami.
Tukaj lahko najdete celotno kodo za projekt GitHub repo.
Začnite z uvozom modula pygame. Nato ga inicializirajte in ustvarite okno igre z uporabo pygame.display.set_mode() funkcijo. Nato nastavite naslov okna in ustvarite predmet ure za upravljanje hitrosti sličic.
uvoz pygame
pygame.init()
WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600zaslon = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption("Moja preprosta igra")
ura = pygame.time. ura()
BARVA_OZADJA = (255, 255, 255)
Nato nastavite predvajalnik in statične platforme. Določite velikost igralca in njegov začetni položaj.
PLAYER_WIDTH = 50
PLAYER_HEIGHT = 50igralec_x = WINDOW_WIDTH // 2 - PLAYER_WIDTH // 2
player_y = WINDOW_HEIGHT - PLAYER_HEIGHT - 20PLAYER_SPEED = 10
RECTANGLE_COLOR_1 = (255, 0, 0)
RECTANGLE_COLOR_2 = (0, 0, 255)
pravokotnik_1 = pygame. Rect(200, 200, 100, 100)
pravokotnik_2 = pygame. Rect(500, 300, 150, 50)
Nato ustvarite igralno zanko, ki obravnava dogodke in posodablja zaslon. V zanki preverite dogodke, kot je zapustitev igre ali premikanje igralca s puščičnimi tipkami.
medtemPrav:
# Obravnavajte dogodke
za dogodek v pygame.event.get():
če event.type == pygame. PRENEHATI:
pygame.quit()
prenehati()# Narišite ozadje
screen.fill (BACKGROUND_COLOR)# Narišite statične pravokotnike
pygame.draw.rect (zaslon, RECTANGLE_COLOR_1, pravokotnik_1)
pygame.draw.rect (zaslon, RECTANGLE_COLOR_2, pravokotnik_2)# Narišite igralca
player_rect = pygame. Rect (player_x, player_y, PLAYER_WIDTH,
PLAYER_HEIGHT)pygame.draw.rect (zaslon, (0, 0, 0), player_rect)
# Posodobite zaslon
pygame.display.update()
# Omejite hitrost sličic
clock.tick(30)
Nastavitev kamere
Zdaj, ko imate preprosto igro s pravokotnikom igralca in dvema statičnima platformama, lahko začnete delati na kameri. V PyGame je kamera v bistvu samo odmik, ki deluje na vse predmete, ki jih narišete na zaslon. To pomeni, da če kamero premaknete v levo, se bo vse na zaslonu premaknilo v desno.
Če želite nastaviti kamero, morate najprej definirati spremenljivko, ki bo držala odmik X kamere. Pokličite to spremenljivko camera_offset_x in ga inicializirati na 0.
# Nastavite odmik kamere
camera_offset_x = 0
Nato posodobite položaje vseh predmetov, ki jih narišete na zaslon, da upoštevate odmik kamere. To lahko storite tako, da dodate camera_offset_x vrednost na položaj X vsakega predmeta. Na primer, položaj igralca lahko posodobite takole:
# Narišite igralca
player_rect = pygame. Rect (player_x + camera_offset_x, player_y, PLAYER_WIDTH,
PLAYER_HEIGHT)
pygame.draw.rect (zaslon, (0, 0, 0), player_rect)
Podobno lahko posodobite položaje statičnih platform na naslednji način:
# Narišite statične pravokotnike
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)
Premikanje kamere z vnosi s tipkovnice
Zdaj, ko imate kamero nastavljeno, jo lahko začnete premikati. Eden od načinov za to je premikanje kamere kot odgovor na vnose s tipkovnice. Na primer, kamero lahko premaknete v levo, ko igralec pritisne levo puščično tipko.
Če želite to narediti, dodajte naslednjo kodo v zanko dogodkov, ki obravnava vnose s tipkovnice:
če event.type == pygame. KEYDOWN:
če event.key == pygame. K_LEVO:
camera_offset_x -= PLAYER_SPEED
elif event.key == pygame. K_DESNO:
camera_offset_x += PLAYER_SPEED
Drug način je, da spremenite igralčevo koordinato x na tipkovnico in nato posodobite odmik kamere. To lahko implementirate takole:
# Obravnavajte dogodke
za dogodek v pygame.event.get():
če event.type == pygame. PRENEHATI:
pygame.quit()
prenehati()
če event.type == pygame. KEYDOWN:
če event.key == pygame. K_LEVO:
igralec_x -= HITROST_IGRALCA
elif event.key == pygame. K_DESNO:
player_x += PLAYER_SPEED
Nato lahko posodobite odmik kamere glede na koordinato x igralca, kot sledi:
camera_offset_x = WINDOW_WIDTH // 2 - player_x - PLAYER_WIDTH // 2
Premikanje kamere z miško
Drug način premikanja kamere je uporaba miške. Igralcu lahko dovolite, da vleče zaslon s klikom in vlečenjem miške.
Če želite to narediti, sledite položaju miške, ko igralec pritisne levi gumb miške. Ko premaknejo miško, posodobijo x koordinato igralca. Spremeniti bi se moral glede na razliko med trenutnim položajem miške in začetnim položajem, ki ste ga spremljali, mouse_start_pos.
# Obravnavajte dogodke
za dogodek v pygame.event.get():
če event.type == pygame. PRENEHATI:
pygame.quit()
prenehati()če event.type == pygame. MOUSEBTONDOWN:
če event.button == 1:
mouse_start_pos = pygame.mouse.get_pos()
če event.type == pygame. MOUSEMOTION:
če pygame.mouse.get_pressed()[0]:
mouse_current_pos = pygame.mouse.get_pos()
odmik_miške_x = trenutni_pos_miške[0] - mouse_start_pos[0]
igralec_x -= odmik_miške_x
mouse_start_pos = trenutni_pos_miške
Dodajanje več funkcij kamere
Poleg učinka drseče kamere lahko dodate več drugih funkcij, povezanih s kamero, da izboljšate izkušnjo igranja. Ena takšnih funkcij je učinek povečave kamere, ki omogoča igralcu, da poveča ali pomanjša svet igre. Ta učinek lahko dosežete s spreminjanjem velikosti okna igre in spreminjanjem velikosti predmetov, narisanih na zaslonu.
Če želite to narediti, definirajte spremenljivko povečave, ki bo shranila trenutno stopnjo povečave igre. Nastavite njegovo začetno vrednost na 1,0, kar ne predstavlja povečave. Nato definirajte funkcijo, ki bo izračunala pomanjšano velikost predmeta na podlagi trenutne stopnje povečave.
povečava = 1.0
defget_scaled_size(velikost):
vrnitev int (velikost * povečava)
Nato posodobite položaje in velikosti predmetov, narisanih na zaslonu, z uporabo get_scaled_size funkcijo. Na primer, položaj in velikost igralca lahko posodobite na naslednji način:
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)
)
Podobno posodobite položaje in velikosti statičnih ploščadi, kot sledi:
rectangle_1_draw_pos = pygame. Rect(
get_scaled_size (rectangle_1.x + camera_offset_x),
get_scaled_size (pravokotnik_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. Rect(
get_scaled_size (rectangle_2.x + camera_offset_x),
get_scaled_size (rectangle_2.y),
get_scaled_size (rectangle_2.width),
get_scaled_size (rectangle_2.height)
)
pygame.draw.rect (zaslon, RECTANGLE_COLOR_2, rectangle_2_draw_pos)
Povečajte ali zmanjšajte stopnjo povečave za 0,1, ko predvajalnik pritisne = oz - ključ oz. Nastavite novo velikost okna igre glede na trenutno stopnjo povečave. Če želite to narediti, dodajte naslednjo kodo v zanko dogodkov, ki obravnava vnose s tipkovnice:
če event.type == pygame. KEYDOWN:
če event.key == pygame. K_ENAKO:
povečava += 0.1zaslon = pygame.display.set_mode((
int (WINDOW_WIDTH * povečava),
int (WINDOW_HEIGHT * povečava)
))
elif event.key == pygame. K_MINUS:
povečava -= 0.1če povečava < 0.1:
povečava = 0.1
zaslon = pygame.display.set_mode((
int (WINDOW_WIDTH * povečava),
int (WINDOW_HEIGHT * povečava)
))
Z zgornjo kodo ste naši igri PyGame uspešno dodali učinek povečave kamere. Če združite to funkcijo z učinkom drsne kamere, lahko ustvarite dinamično in privlačno izkušnjo igre.
Izboljšanje igranja s premiki kamere
Dodajanje drsne kamere v igro PyGame ne samo izboljša vizualno izkušnjo, ampak tudi izboljša igranje. Igralcu omogoča, da vidi več sveta igre, mu omogoča boljše razumevanje okolice in olajša navigacijo.
Premikanje kamere lahko uporabite tudi za ustvarjanje posebnih učinkov, kot je povečevanje in pomanjševanje ali tresenje zaslona za simulacijo eksplozij ali potresov.