Crește-ți experiența de joc cu jocurile Python Arcade prin încorporarea unei camere.
Biblioteca Arcade a lui Python este un cadru puternic și ușor de utilizat pentru crearea de jocuri 2D. O caracteristică cheie care poate îmbunătăți foarte mult jocul și experiența utilizatorului este adăugarea unei camere. Adăugarea unei camere la jocul dvs. permite manipularea dinamică a feței de vizualizare, permițând jucătorului să exploreze lumi de joc mai mari, să se concentreze pe anumite zone sau să urmărească obiectele în mișcare.
Mutând punctul de vedere al camerei, puteți crea efecte vizuale atractive, puteți îmbunătăți mecanica de joc și puteți oferi o experiență de joc mai captivantă.
Creați un joc simplu
Înainte de a începe, instalați pip pe dispozitivul dvs și utilizați comanda de mai jos pentru a instala arcadă modul:
pip install arcade
Acum, începeți prin a crea un joc de bază cu derulare laterală, în care jucătorul controlează un personaj care se poate deplasa la stânga și la dreapta folosind tastele săgeți.
Codul folosit în acest articol este disponibil în acest articol Depozitul GitHub și este gratuit pentru utilizare sub licența MIT.
În plus, puteți adăuga un obstacol pentru ca jucătorul să navigheze.
import arcadă
SCREEN_WIDTH = 800
SCREEN_HEIGHT = 600
MOVEMENT_SPEED = 5clasăJocul meu(arcadă. Fereastră):
def__init__(sine, lățime, înălțime):
super().__init__(lățime, înălțime)
self.player_x = latime // 2
self.player_y = înălțime // 2defînființat(de sine):
arcade.set_background_color (arcade.color. CER ALBASTRU)defon_draw(de sine):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. ROȘU)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. VERDE)defActualizați(self, delta_time):
trecedefon_key_press(sine, cheie, modificatori):
dacă cheie == arcade.key. STÂNGA:
self.player_x -= MOVEMENT_SPEED
elif cheie == arcade.key. DREAPTA:
self.player_x += MOVEMENT_SPEED
dacă __nume__ == "__principal__":
joc = MyGame (SCREEN_WIDTH, SCREEN_HEIGHT)
game.setup()
arcade.run()
Configurarea camerei
Pentru a adăuga o cameră la joc, creați un aparat foto clasă care gestionează poziția și mișcarea camerei. Această clasă va avea atribute precum camera_x și camera_y pentru a stoca coordonatele camerei.
clasăaparat foto:
def__init__(de sine):
self.camera_x = 0
self.camera_y = 0
Mișcarea camerei cu intrări de la tastatură
Apoi, modificați jocul on_key_press metoda de a include camera mișcare bazată pe intrările jucătorului. Când playerul se mișcă la stânga sau la dreapta, puteți actualiza poziția camerei în consecință. De asemenea, ajustați codul de desen pentru a ține cont de poziția camerei atunci când redați obiectele de joc.
clasăJocul meu(arcadă. Fereastră):
def__init__(sine, lățime, înălțime):
super().__init__(lățime, înălțime)
self.camera = Camera()
self.player_x = latime // 2
self.player_y = înălțime // 2defon_key_press(sine, cheie, modificatori):
dacă cheie == arcade.key. STÂNGA:
self.player_x -= MOVEMENT_SPEED
self.camera.camera_x -= MOVEMENT_SPEED
elif cheie == arcade.key. DREAPTA:
self.player_x += MOVEMENT_SPEED
self.camera.camera_x += MOVEMENT_SPEED
defon_draw(de sine):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. ROȘU)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. VERDE)
Mișcarea camerei cu intrări de mouse
Pe lângă intrările de la tastatură, puteți activa și mișcarea camerei pe baza intrărilor mouse-ului. De exemplu, puteți permite playerului să deplaseze camera foto trăgând ecranul. Pentru a realiza acest lucru, modificați on_mouse_drag metodă de a actualiza poziția camerei în funcție de mișcarea mouse-ului.
clasăJocul meu(arcadă. Fereastră):
defon_mouse_drag(self, x, y, dx, dy, butoane, modificatori):
dacă butoane == arcade. MOUSE_BUTTON_LEFT:
self.camera.camera_x -= dx
self.camera.camera_y -= dy
Inclusiv caracteristici suplimentare
Adăugarea unei camere la jocul tău deschide o lume de posibilități pentru funcții și efecte suplimentare. Iată câteva exemple despre cum vă puteți îmbunătăți și mai mult jocul folosind sistemul de cameră.
Funcționalitatea Zoom
Pentru a implementa funcționalitatea de zoom, trebuie să introduceți a zoom variabilă în aparat foto clasa și modificați on_mouse_scroll metodă de a actualiza nivelul de zoom pe baza mișcării roții mouse-ului. De asemenea, trebuie să ajustați set_viewport parametrii pentru a lua în considerare nivelul de zoom.
clasăaparat foto:
def__init__(de sine):
self.camera_x = 0
self.camera_y = 0
self.zoom = 1.0clasăJocul meu(arcadă. Fereastră):
defon_mouse_scroll(self, x, y, scroll_x, scroll_y):
self.camera.zoom += scroll_y * 0.1
defon_draw(de sine):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x * self.camera.zoom,
(self.camera.camera_x + SCREEN_WIDTH) * self.camera.zoom,
self.camera.camera_y * self.camera.zoom,
(self.camera.camera_y + SCREEN_HEIGHT) * self.camera.zoom
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. ROȘU)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. VERDE)
Mișcare lină a camerei
Pentru a obține o mișcare mai lină a camerei, puteți introduce o tehnică de interpolare numită interpolare liniară (lerp). Modificați Actualizați metodă de a muta treptat camera către o poziție țintă folosind lerp. Acest lucru creează un efect de tranziție lină.
clasăaparat foto:
def__init__(de sine):
self.camera_x = 0
self.camera_y = 0
self.target_x = 0
self.target_y = 0
self.lerp_speed = 0.1defActualizați(de sine):
self.camera_x = arcade.lerp (self.camera_x, self.target_x, self.lerp_speed)
self.camera_y = arcade.lerp (self.camera_y, self.target_y, self.lerp_speed)clasăJocul meu(arcadă. Fereastră):
defActualizați(self, delta_time):
self.camera.target_x = self.player_x - SCREEN_WIDTH // 2
self.camera.target_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update()
defon_draw(de sine):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. ROȘU)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. VERDE)
Constrângeri ale camerei
Pentru a preveni deplasarea camerei dincolo de anumite limite, puteți introduce constrângeri. De exemplu, puteți defini o poziție minimă și maximă a camerei și vă puteți asigura că camera rămâne în limitele respective.
clasăaparat foto:
def__init__(de sine):
self.camera_x = 0
self.camera_y = 0
sine.min_x = 0
sine.max_x = 800
self.min_y = 0
self.max_y = 600defActualizați(de sine):
self.camera_x = max (self.min_x, min (self.camera_x, self.max_x))
self.camera_y = max (self.min_y, min (self.camera_y, self.max_y))clasăJocul meu(arcadă. Fereastră):
defActualizați(self, delta_time):
self.camera.camera_x = self.player_x - SCREEN_WIDTH // 2
self.camera.camera_y = self.player_y - SCREEN_HEIGHT // 2
self.camera.update()
defon_draw(de sine):
arcade.start_render()
arcade.set_viewport(
self.camera.camera_x,
self.camera.camera_x + SCREEN_WIDTH,
self.camera.camera_y,
self.camera.camera_y + SCREEN_HEIGHT
)
arcade.draw_circle_filled (self.player_x, self.player_y, 20, arcade.color. ROȘU)
arcade.draw_rectangle_filled(400, 200, 80, 40, arcade.color. VERDE)
Acestea sunt doar câteva exemple despre cum puteți utiliza sistemul de camere pentru a include funcții și efecte suplimentare în jocurile dvs. Python Arcade.
De asemenea, puteți adăuga multe alte funcții suplimentare la jocurile dvs. bazate pe Python. De exemplu, puteți face camera să-și amintească poziția atunci când este jucătorul trece la un alt nivel. Acest lucru asigură că vizualizarea rămâne aceeași atunci când treceți între niveluri, oferind o experiență lină și consistentă pentru jucător.
Cele mai bune practici pentru un sistem de cameră
Când implementați un sistem de cameră în jocul dvs. Python Arcade, este esențial să urmați cele mai bune practici pentru a asigura funcționalitate optimă și o experiență fluidă pentru jucător. Iată câteva linii directoare cheie de care trebuie să țineți cont:
- Evitați mișcarea excesivă a camerei: Deși camera poate adăuga elemente dinamice jocului dvs., este esențial să găsiți un echilibru și să evitați mișcarea excesivă a camerei. Schimbarea constantă a poziției camerei poate dezorienta jucătorii și îi poate face dificil să navigheze în lumea jocului.
- Testați în diferite rezoluții și raporturi de aspect: Este esențial să testați sistemul dvs. de camere pe diferite rezoluții de ecran și rapoarte de aspect pentru a vă asigura că funcționează bine pe diferite dispozitive și configurații. Acest lucru vă va ajuta să identificați orice probleme legate de scalarea ferestrei de vizualizare, poziționarea obiectelor sau ajustările raportului de aspect.
- Optimizați redarea: Sistemul de camere poate avea un impact potențial asupra performanței jocului, mai ales atunci când redați lumi mari de joc sau numeroase obiecte. Pentru a optimiza randarea, determinați ce obiecte se află în afara vizualizării camerei și excludeți-le de la randare.
- Manevrați carcasele marginale: Acordați atenție cazurilor marginale în care camera poate întâlni scenarii specifice, cum ar fi limite, detectarea coliziunilor sau suprapuneri de obiecte. Asigurați-vă că sistemul de cameră tratează aceste cazuri cu grație și oferă tranziții ușoare sau indicii vizuale adecvate pentru a indica limitările sau interacțiunile cu mediul de joc.
Urmând aceste bune practici, puteți crea un sistem de cameră robust și ușor de utilizat, care se integrează perfect în jocurile dvs. Python Arcade.
Faceți jocurile mai distractive folosind camera
Adăugând o cameră la jocurile dvs. Python Arcade, puteți îmbunătăți foarte mult imersiunea și implicarea jucătorilor. Fie că este vorba de crearea unor lumi de joc extinse, de concentrarea pe zone critice sau de urmărirea obiectelor în mișcare, sistemul de camere oferă un instrument puternic pentru dezvoltatorii de jocuri.
Folosind mișcarea camerei, zoomul și efectele suplimentare, puteți crea experiențe fascinante care captivează jucătorii și îi fac să revină pentru mai multe.