Opi mallintamaan kameraa, joka voi panoroida pelimaailmaasi ja lisätä realistisuutta ja toimivuutta.
Yksi yleinen ominaisuus, jonka löydät monista peleistä, on vierivä kamera, joka seuraa sinua, kun liikut pelimaailmassa. Tämä tehoste voi lisätä peliisi syvyyttä ja realistisuutta ja parantaa yleistä pelikokemusta.
PyGamessa on monia eri tapoja toteuttaa vierivä kamera, joten varmista, että ymmärrät niiden erot.
Yksinkertaisen pelin luominen
Ennen aloittamista, asenna pip laitteellesi ja käytä alla olevaa komentoa PyGame-moduulin asentamiseen:
pip asennus pygame
Nyt voit luoda yksinkertaisen pelin, jossa on pelaajasuorakulmio ja kaksi staattista alustaa. Pelaaja voi liikkua vasemmalle ja oikealle nuolinäppäimillä.
Löydät projektin täydellisen koodin tästä GitHub repo.
Aloita tuomalla pygame-moduuli. Alusta sitten se ja luo peli-ikkuna käyttämällä pygame.display.set_mode() toiminto. Aseta sitten ikkunan otsikko ja luo kelloobjekti kehysnopeuden hallintaan.
tuonti pygame
pygame.init()
WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600näyttö = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
pygame.display.set_caption("Minun yksinkertainen pelini")
kello = pygame.time. Kello()
BACKGROUND_COLOR = (255, 255, 255)
Aseta seuraavaksi soitin ja staattiset alustat. Määritä soittimen koko ja sen alkusijainti.
PLAYER_WIDTH = 50
PLAYER_HEIGHT = 50player_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)
rectangle_1 = pygame. Rect(200, 200, 100, 100)
rectangle_2 = pygame. Rect(500, 300, 150, 50)
Luo sitten pelisilmukka, joka käsittelee tapahtumia ja päivittää näytön. Tarkista silmukassa tapahtumia, kuten pelin lopettamista tai pelaajan siirtämistä nuolinäppäimillä.
sillä aikaaTotta:
# Käsittele tapahtumia
varten tapahtuma sisään pygame.event.get():
jos event.type == pygame. LOPETTAA:
pygame.quit()
lopettaa()# Piirrä tausta
screen.fill (BACKGROUND_COLOR)# Piirrä staattiset suorakulmiot
pygame.draw.rect (näyttö, RECTANGLE_COLOR_1, rectangle_1)
pygame.draw.rect (näyttö, RECTANGLE_COLOR_2, rectangle_2)# Piirrä soitin
player_rect = pygame. Suora (player_x, player_y, PLAYER_WIDTH,
PLAYER_HEIGHT)pygame.draw.rect (näyttö, (0, 0, 0), pelaaja_oikea)
# Päivitä näyttö
pygame.display.update()
# Rajoita kuvanopeutta
kello.tick(30)
Kameran asentaminen
Nyt kun sinulla on yksinkertainen peli, jossa on pelaajasuorakulmio ja kaksi staattista alustaa, voit alkaa työskennellä kameran parissa. PyGamessa kamera on pohjimmiltaan vain offset, joka vaikuttaa kaikkiin objekteihin, jotka piirrät näytölle. Tämä tarkoittaa, että jos siirrät kameraa vasemmalle, kaikki näytössä näkyy liikkuvan oikealle.
Kameran määrittämistä varten sinun on ensin määritettävä muuttuja, joka pitää kameran X-siirron. Kutsu tätä muuttujaa camera_offset_x ja alusta se arvoon 0.
# Aseta kameran siirtymä
camera_offset_x = 0
Päivitä seuraavaksi kaikkien näytölle piirtämiesi kohteiden paikat ottaaksesi huomioon kameran siirtymän. Voit tehdä tämän lisäämällä camera_offset_x arvo kunkin objektin X-paikkaan. Voit päivittää pelaajan paikan esimerkiksi seuraavasti:
# Piirrä soitin
player_rect = pygame. Suora (player_x + camera_offset_x, player_y, PLAYER_WIDTH,
PLAYER_HEIGHT)
pygame.draw.rect (näyttö, (0, 0, 0), pelaaja_oikea)
Samoin voit päivittää staattisten alustojen sijainnit seuraavasti:
# Piirrä staattiset suorakulmiot
rectangle_1_draw_pos = suorakulmio_1.siirrä (camera_offset_x, 0)
pygame.draw.rect (näyttö, RECTANGLE_COLOR_1, rectangle_1_draw_pos)
rectangle_2_draw_pos = suorakulmio_2.siirrä (camera_offset_x, 0)
pygame.draw.rect (näyttö, RECTANGLE_COLOR_2, rectangle_2_draw_pos)
Kameran siirtäminen näppäimistön tuloilla
Nyt kun olet asentanut kameran, voit aloittaa sen siirtämisen. Yksi tapa tehdä tämä on siirtää kameraa vasteena näppäimistön syötteisiin. Voit esimerkiksi siirtää kameraa vasemmalle, kun soitin painaa vasenta nuolinäppäintä.
Voit tehdä tämän lisäämällä seuraavan koodin tapahtumasilmukkaan, joka käsittelee näppäimistön syötteitä:
jos event.type == pygame. KEYDOWN:
jos event.key == pygame. K_LEFT:
camera_offset_x -= PLAYER_SPEED
elif event.key == pygame. K_OIKEA:
camera_offset_x += PLAYER_SPEED
Toinen tapa on muuttaa soittimen x-koordinaattia näppäimistön painalluksella ja päivittää sitten kameran siirtymä. Voit toteuttaa tämän seuraavasti:
# Käsittele tapahtumia
varten tapahtuma sisään pygame.event.get():
jos event.type == pygame. LOPETTAA:
pygame.quit()
lopettaa()
jos event.type == pygame. KEYDOWN:
jos event.key == pygame. K_LEFT:
player_x -= PLAYER_SPEED
elif event.key == pygame. K_OIKEA:
player_x += PLAYER_SPEED
Sitten voit päivittää kameran siirtymän soittimen x-koordinaatin suhteen seuraavasti:
camera_offset_x = WINDOW_WIDTH // 2 - player_x - PLAYER_WIDTH // 2
Kameran siirtäminen hiiren tuloliitännöillä
Toinen tapa siirtää kameraa on käyttää hiirtä. Voit antaa soittimen vetää näyttöä ympäriinsä napsauttamalla ja vetämällä hiirtä.
Voit tehdä tämän seuraamalla hiiren sijaintia, kun soitin painaa hiiren vasenta painiketta. Päivitä pelaajan x-koordinaatti, kun he siirtävät hiirtä. Sen pitäisi muuttua hiiren nykyisen sijainnin ja seuraamasi alkuperäisen sijainnin välisen eron mukaan, mouse_start_pos.
# Käsittele tapahtumia
varten tapahtuma sisään pygame.event.get():
jos event.type == pygame. LOPETTAA:
pygame.quit()
lopettaa()jos event.type == pygame. HIIRIPAINIKE:
jos event.button == 1:
mouse_start_pos = pygame.mouse.get_pos()
jos event.type == pygame. MOUSEMOTION:
jos pygame.mouse.get_pressed()[0]:
mouse_current_pos = pygame.mouse.get_pos()
mouse_offset_x = mouse_current_pos[0] - mouse_start_pos[0]
player_x -= hiiri_offset_x
mouse_start_pos = mouse_current_pos
Lisää kameran ominaisuuksia
Vierivän kameraefektin lisäksi voit lisätä useita muita kameraan liittyviä ominaisuuksia parantaaksesi pelikokemusta. Yksi tällainen ominaisuus on zoomauskameratehoste, jonka avulla pelaaja voi lähentää tai loitontaa pelimaailmaa. Voit saavuttaa tämän vaikutuksen muuttamalla peliikkunan kokoa ja skaalaamalla näytölle piirrettyjä objekteja.
Voit tehdä tämän määrittämällä zoomausmuuttujan, joka tallentaa pelin nykyisen zoomaustason. Aseta sen alkuarvoksi 1,0, mikä tarkoittaa, että zoomausta ei ole. Määritä sitten funktio, joka laskee kohteen skaalatun koon nykyisen zoomaustason perusteella.
zoomaus = 1.0
defget_scaled_size(koko):
palata int (koko * zoom)
Päivitä seuraavaksi näytölle piirrettyjen objektien sijainnit ja koot käyttämällä get_scaled_size toiminto. Voit esimerkiksi päivittää soittimen paikan ja koon seuraavasti:
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)
)
Samoin päivitä staattisten alustojen sijainnit ja koot seuraavasti:
rectangle_1_draw_pos = pygame. Rect(
get_scaled_size (suorakulmio_1.x + camera_offset_x),
get_scaled_size (suorakulmio_1.y),
get_scaled_size (suorakulmio_1.leveys),
get_scaled_size (suorakulmio_1.korkeus)
)pygame.draw.rect (näyttö, RECTANGLE_COLOR_1, rectangle_1_draw_pos)
rectangle_2_draw_pos = pygame. Rect(
get_scaled_size (suorakulmio_2.x + camera_offset_x),
get_scaled_size (suorakulmio_2.y),
get_scaled_size (suorakulmio_2.leveys),
get_scaled_size (suorakulmio_2.korkeus)
)
pygame.draw.rect (näyttö, RECTANGLE_COLOR_2, rectangle_2_draw_pos)
Suurenna tai vähennä zoomaustasoa 0,1, kun soitin painaa = tai - vastaavasti. Aseta peliikkunan uusi koko nykyisen zoomaustason perusteella. Voit tehdä tämän lisäämällä seuraavan koodin tapahtumasilmukkaan, joka käsittelee näppäimistön syötteitä:
jos event.type == pygame. KEYDOWN:
jos event.key == pygame. K_EQUALS:
zoomaus += 0.1näyttö = pygame.display.set_mode((
int (WINDOW_WIDTH * zoom),
int (WINDOW_HEIGHT * zoom)
))
elif event.key == pygame. K_MIINUS:
zoomaus -= 0.1jos zoomaus < 0.1:
zoomaus = 0.1
näyttö = pygame.display.set_mode((
int (WINDOW_WIDTH * zoom),
int (WINDOW_HEIGHT * zoom)
))
Yllä olevalla koodilla olet onnistuneesti lisännyt zoomaavan kameratehosteen PyGame-peliimme. Yhdistämällä tämän ominaisuuden vierivään kameratehosteeseen voit luoda dynaamisen ja mukaansatempaavan pelikokemuksen.
Pelin pelattavuuden parantaminen kameran liikkeillä
Vierivän kameran lisääminen PyGame-peliin ei vain paranna visuaalista kokemusta, vaan myös parantaa pelattavuutta. Sen avulla pelaaja näkee enemmän pelimaailmaa, antaa heille paremman ymmärryksen ympäristöstään ja helpottaa navigointia.
Voit myös käyttää kameran liikettä erikoistehosteiden, kuten lähentämisen ja loitontamiseen, tai näytön ravistelemiseen simuloidaksesi räjähdyksiä tai maanjäristyksiä.