Tato herní knihovna Pythonu je plná funkcí, včetně několika jednoduchých nástrojů, které můžete použít k vytvoření hladkého paralaxního rolování.
Posouvání pozadí může výrazně zvýšit vizuální přitažlivost a hloubku hry. Dokážou vytvořit iluzi pohybu a dodat hře dynamický a pohlcující pocit. Pomocí Pygame můžete implementovat rolovací pozadí v několika jednoduchých krocích.
Pygame je oblíbená knihovna Pythonu, kterou můžete použít k vývoji her. Přidáním rolovacího pozadí do vašich projektů Pygame je oživíte a poskytnete hráčům poutavější zážitek.
Vytvořte jednoduchou hru
Abyste pochopili koncept rolování pozadí v Pygame, začněte vytvořením jednoduché hry, kde se hráč může pohybovat doleva a doprava. Můžete také zahrnout dvě platformy, reprezentované obdélníky, které budou sloužit jako herní prostředí. Vytvořte nový soubor s názvem jednoduchá hra.py.
Kód použitý v tomto článku je k dispozici v tomto úložiště GitHub a můžete jej používat zdarma pod licencí MIT.
Nejprve naimportujte modul pygame a inicializujte jej. Poté definujte výchozí pozici hráče a rychlost pohybu. Vytvářejte platformy pomocí
pygame. Rect objektů a definovat jejich polohy a rozměry.Uvnitř herní smyčky řešte události, jako je ukončení hry. Můžete také zvládnout pohyb hráče na základě dotykových vstupů nebo vstupů z klávesnice.
Zde je výstup jednoduché hry:
Vytvářejte různé vrstvy
Chcete-li dosáhnout efektu posouvání, můžete vytvořit více vrstev pozadí s různými barvami. Každá vrstva se bude pohybovat jinou rychlostí, čímž vznikne efekt paralaxy. Tento efekt dává iluzi hloubky a zvyšuje pocit pohybu ve hře.
Pomocí pygame definujte dvě vrstvy pozadí, z nichž každá pokrývá celé okno hry. Obdélníkové objekty. Definujte také barvy každé vrstvy v barvy pozadí seznam. The pozadí_rychlosti seznam určuje rychlost, jakou se budou jednotlivé vrstvy pohybovat.
# Přidejte tento kód pod předchozí sekci
background_layers = [
pygame. Rect(0, 0, screen_width, screen_height),
pygame. Rect(0, 0, screen_width, screen_height)
]
barvy_pozadi = [(30, 30, 30), (60, 60, 60)]
background_speeds = [0.1, 1.0]
Chcete-li vytvořit efekt rolování pozadí, musíte aktualizovat pozice vrstev pozadí ve smyčce hry. Každou vrstvu budete pohybovat vodorovně na základě její přiřazené rychlosti.
Vytvořte nový soubor s názvem rolování-bg.py a přidejte kód s níže uvedenými aktualizacemi:
pro i v rozsah (délka (vrstvy_pozadí)):
background_layers[i].x -= background_speeds[i]-li background_layers[i].x <= -screen_width:
background_layers[i].x = 0
pygame.draw.rect (screen, background_colors[i], background_layers[i])
Iterujte každou vrstvu pozadí. Odečtěte odpovídající rychlost od x-ové souřadnice vrstvy, což způsobí, že se vrstva posune doleva. Pokud vrstva dosáhne levého okraje obrazovky, obnovte její polohu doprava, čímž vytvoříte efekt nepřetržitého posouvání.
Konečně, nakreslete každou obdélníkovou vrstvu pozadí na obrazovce pomocí pygame.draw.rect() a předání odpovídající barvy a pygame. Obdélníkový objekt.
Přidání efektu paralaxy při pohybu
Chcete-li zesílit efekt paralaxy, můžete upravit pohyb plošiny tak, aby nastal, když se hráč pohybuje. To vytvoří silný pocit hloubky a dynamického pohybu. Vytvořte nový soubor s názvem paralaxa.py a přidejte kód s níže uvedenými aktualizacemi:
# Definujte polohy a rychlosti plošiny
rect1 = pygame. Rect(50, výška_obrazovky - 100, 200, 10)
rect2 = pygame. Obdélníkový (screen_width - 250, výška_obrazovky - 200, 200, 10)platformy = [
{"pravý": obdélník 1, "Rychlost": 3},
{"pravý": obdélník 2, "Rychlost": 1}
]# Přidejte tento kód do herní smyčky
# Pohyb hráče
keys = pygame.key.get_pressed()-li klíče [pygame. K_LEFT] a player_x > 0:
player_x -= player_speedpro plošina v platformy:
plošina["pravý"].x -= platforma["Rychlost"]-li klíče [pygame. K_RIGHT] a player_x < screen_width:
player_x += player_speedpro plošina v platformy:
plošina["pravý"].x += platforma["Rychlost"]
pro plošina v platformy:
pygame.draw.rect (obrazovka, (0, 255, 0), plošina["pravý"])
Představte platformy jako slovníky, které obsahují objekt obdélník (rect) a rychlost, kterou by se měla platforma pohybovat (rychlost). Platformy se ve smyčce hry aktualizují na základě pohybu hráče.
Implementací této modifikace bude efekt rolování aktivní pouze tehdy, když se hráč aktivně pohybuje, což dále posílí iluzi hloubky a pohybu.
Včetně dalších funkcí
Můžete implementovat několik dalších funkcí pro vylepšení rolovacího pozadí ve vaší hře. Zde jsou nějaké příklady.
Náhodné barvy pozadí
Chcete-li přidat variaci do vrstev pozadí, můžete náhodně upravit jejich barvy. Můžete to udělat úpravou barvy pozadí seznam:
import náhodný
# Přidejte tento kód před herní smyčku
barvy_pozadi = [
(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)),
(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255)),
(random.randint(0, 255), random.randint(0, 255), random.randint(0, 255))
]
Přidejte další vrstvy pozadí
Můžete experimentovat s přidáním dalších vrstev pozadí, abyste vytvořili bohatší paralaxový efekt. Jednoduše definujte další pygame. Rect objekty, barvy a rychlosti:
# Přidejte tento kód před herní smyčku
background_layers = [
pygame. Rect(0, 0, screen_width, screen_height),
pygame. Rect(0, 0, screen_width, screen_height),
pygame. Rect(0, 0, screen_width, screen_height),
pygame. Rect(0, 0, screen_width, screen_height)
]barvy_pozadi = [
(30, 30, 30),
(60, 60, 60),
(90, 90, 90),
(120, 120, 120)
]
background_speeds = [1, 2, 3, 4]
Použít obrázky jako pozadí
Místo plných barev můžete jako pozadí použít soubory obrázků. Pygame poskytuje funkce pro načítání a vykreslování obrázků.
Načtěte soubory obrázků background_0.png, background_1.png, a background_2.png použitím pygame.image.load(). Pomocí metody convert() zlepšíte výkon a změníte měřítko obrázků tak, aby odpovídaly rozměrům obrazovky pygame.transform.scale().
# Přidejte tento kód před herní smyčku
background_images = [
pygame.image.load("background_0.png").konvertovat(),
pygame.image.load("background_1.png").konvertovat(),
pygame.image.load("background_2.png").konvertovat()
]background_speeds = [1, 2, 3]
pro i v rozsah (len (background_images)):
size = (screen_width, screen_height)
background_images[i] = pygame.transform.scale (background_images[i], velikost)
Nakonec aktualizujte smyčku, kde kreslíte vrstvy pozadí, abyste mohli používat obrázky:
# Aktualizujte tento kód uvnitř herní smyčky
pro i v rozsah (délka (vrstvy_pozadí)):
background_layers[i].x -= background_speeds[i]-li background_layers[i].x <= -screen_width:
background_layers[i].x = 0
screen.blit (background_images[i], background_layers[i])
Zde je několik osvědčených postupů, které je třeba zvážit při implementaci rolovacího pozadí ve vašich projektech Pygame.
Optimalizovat výkon
Posouvání pozadí zahrnuje průběžné vykreslování a aktualizaci. Chcete-li zajistit plynulé hraní, zvažte optimalizaci kódu a minimalizaci zbytečných výpočtů.
Experimentujte s rychlostmi vrstev
Nastavením rychlosti vrstev pozadí lze vytvořit různé efekty. Pohrajte si s různými hodnotami, abyste našli správnou rovnováhu a dosáhli požadovaného vizuálního dopadu.
Test na různých velikostech obrazovky
Ujistěte se, že vaše rolovací pozadí funguje dobře na různých rozlišeních obrazovky. Zvažte implementaci dynamického škálování nebo použití různých obrázků na pozadí pro různé poměry stran.
Použijte vhodné formáty obrázků
Pokud se rozhodnete pro pozadí použít obrázky, vyberte vhodný formát obrázku (např. PNG, JPEG), abyste vyvážili velikost souboru a kvalitu obrázku. Dobu načítání můžete zkrátit také komprimací a optimalizací obrázků.
Zvažte využití paměti
Pokud plánujete pro svá pozadí použít mnoho obrázků s vysokým rozlišením, pamatujte na požadavky na paměť. Velké obrázky mohou spotřebovat značné množství paměti, což může ovlivnit výkon a odezvu vaší hry.
Začleněním rolovacího pozadí můžete vytvářet různá prostředí, jako jsou pohyblivé krajiny, futuristická panoráma měst nebo podvodní světy. Efekt paralaxy dodává dynamický nádech, díky čemuž je herní svět živý a interaktivní.
Nezapomeňte experimentovat, opakovat a prozkoumávat kreativní možnosti s rolováním pozadí, aby byly vaše hry pro hráče zábavnější a podmanivé.