Gerçekçilik ve işlevsellik katmak için oyun dünyanızda pan yapabilen bir kamerayı nasıl modelleyeceğinizi öğrenin.

Pek çok oyunda bulacağınız ortak özelliklerden biri, siz oyun dünyasında hareket ederken sizi takip eden kayan bir kameradır. Bu efekt, oyununuza derinlik ve gerçekçilik katabilir ve genel oyun deneyimini iyileştirebilir.

PyGame'de kayan bir kamera uygulamanın birçok farklı yolu vardır, bu yüzden aralarındaki farkları anladığınızdan emin olun.

Basit Bir Oyun Yaratmak

Başlamadan önce, cihazınıza pip yükleyin ve PyGame modülünü kurmak için aşağıdaki komutu kullanın:

pip kurulumu pygame

Artık bir oyuncu dikdörtgeni ve iki statik platformla basit bir oyun oluşturabilirsiniz. Oyuncu ok tuşlarını kullanarak sola ve sağa hareket edebilir.

Projenin tam kodunu burada bulabilirsiniz. GitHub deposu.

pygame modülünü içe aktararak başlayın. Ardından, başlatın ve oyun penceresini kullanarak oluşturun. pygame.display.set_mode() işlev. Ardından, pencerenin başlığını ayarlayın ve kare hızını yönetmek için saat nesnesi.

instagram viewer
içe aktarmak pygame

pygame.init()

PENCERE_GENİŞLİK = 800
PENCERE_YÜKSEKLİK = 600

ekran = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))

pygame.display.set_caption("Basit Oyunum")

saat = pygame.time. Saat()

BACKGROUND_COLOR = (255, 255, 255)

Ardından, oynatıcıyı ve statik platformları kurun. Oynatıcının boyutunu ve başlangıç ​​konumunu tanımlayın.

OYUNCU_GENİŞLİK = 50
OYUNCU_BOY = 50

player_x = WINDOW_WIDTH // 2 - PLAYER_WIDTH // 2
player_y = WINDOW_HEIGHT - OYUNCU_HEIGHT - 20

OYUNCU_HIZ = 10

DİKDÖRTGEN_COLOR_1 = (255, 0, 0)
DİKDÖRTGEN_COLOR_2 = (0, 0, 255)

dikdörtgen_1 = pygame. Doğru(200, 200, 100, 100)
dikdörtgen_2 = pygame. Doğru(500, 300, 150, 50)

Ardından, olayları işleyen ve ekranı güncelleyen bir oyun döngüsü oluşturun. Döngüde, ok tuşlarını kullanarak oyundan çıkma veya oyuncuyu hareket ettirme gibi olayları kontrol edin.

sırasındaDoğru:
# Olayları işle
için etkinlik içinde pygame.event.get():
eğer event.type == pygame. ÇIKIŞ YAPMAK:
pygame.quit()
çıkış yapmak()

# Arka planı çiz
screen.fill (BACKGROUND_COLOR)

# Statik dikdörtgenleri çizin
pygame.draw.rect (ekran, RECTANGLE_COLOR_1, dikdörtgen_1)
pygame.draw.rect (ekran, RECTANGLE_COLOR_2, dikdörtgen_2)

# Oyuncuyu çiz
player_rect = pygame. Rect (player_x, player_y, PLAYER_WIDTH,
OYUNCU_HEIGHT)

pygame.draw.rect (ekran, (0, 0, 0), player_rect)

# Ekranı güncelle
pygame.display.update()

# Kare hızını sınırlayın
saat.tik(30)

Kamerayı Kurma

Artık bir oyuncu dikdörtgeni ve iki statik platformdan oluşan basit bir oyununuz olduğuna göre, kamera üzerinde çalışmaya başlayabilirsiniz. PyGame'de kamera aslında ekrana çizdiğiniz tüm nesneler üzerinde etkili olan bir ofsettir. Bu, kamerayı sola hareket ettirirseniz, ekrandaki her şeyin sağa hareket ediyor gibi görüneceği anlamına gelir.

Kamerayı ayarlamak için önce kameranın X ofsetini tutacak bir değişken tanımlamanız gerekir. Bu değişkeni çağır camera_offset_x ve 0 olarak başlatın.

# Kamera ofsetini ayarlayın
camera_offset_x = 0

Ardından, kamera ofsetini hesaba katmak için ekrana çizdiğiniz tüm nesnelerin konumlarını güncelleyin. ekleyerek bunu yapabilirsiniz. camera_offset_x her nesnenin X konumuna değer. Örneğin, oyuncunun konumunu şu şekilde güncelleyebilirsiniz:

# Oyuncuyu çiz
player_rect = pygame. Rect (player_x + camera_offset_x, player_y, PLAYER_WIDTH,
OYUNCU_HEIGHT)

pygame.draw.rect (ekran, (0, 0, 0), player_rect)

Benzer şekilde, statik platformların konumlarını aşağıdaki gibi güncelleyebilirsiniz:

# Statik dikdörtgenleri çizin
dikdörtgen_1_çizim_pos = dikdörtgen_1.taşı (camera_offset_x, 0)
pygame.draw.rect (ekran, RECTANGLE_COLOR_1, dikdörtgen_1_draw_pos)

dikdörtgen_2_draw_pos = dikdörtgen_2.move (camera_offset_x, 0)
pygame.draw.rect (ekran, RECTANGLE_COLOR_2, dikdörtgen_2_draw_pos)

Klavye Girişleriyle Kamerayı Hareket Ettirme

Artık kamerayı kurduğunuza göre, onu hareket ettirmeye başlayabilirsiniz. Bunu yapmanın bir yolu, klavye girişlerine yanıt olarak kamerayı hareket ettirmektir. Örneğin, oyuncu sol ok tuşuna bastığında kamerayı sola hareket ettirebilirsiniz.

Bunu yapmak için, klavye girişlerini işleyen olay döngüsünün içine aşağıdaki kodu ekleyin:

eğer event.type == pygame. TUŞ AŞAĞI:
eğer event.key == pygame. K_LEFT:
camera_offset_x -= PLAYER_SPEED
elif event.key == pygame. K_RIGHT:
camera_offset_x += PLAYER_SPEED

Başka bir yol da, klavyeye basarak oynatıcının x koordinatını değiştirmek ve ardından kamera ofsetini güncellemektir. Bunu şu şekilde uygulayabilirsiniz:

# Olayları işle
için etkinlik içinde pygame.event.get():
eğer event.type == pygame. ÇIKIŞ YAPMAK:
pygame.quit()
çıkış yapmak()

eğer event.type == pygame. TUŞ AŞAĞI:
eğer event.key == pygame. K_LEFT:
player_x -= PLAYER_SPEED
elif event.key == pygame. K_RIGHT:
player_x += PLAYER_SPEED

Ardından, oyuncunun x koordinatına göre kamera ofsetini aşağıdaki gibi güncelleyebilirsiniz:

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

Fare Girişleriyle Kamerayı Hareket Ettirme

Kamerayı hareket ettirmenin başka bir yolu da fareyi kullanmaktır. Fareyi tıklayıp sürükleyerek oyuncunun ekranı sürüklemesine izin verebilirsiniz.

Bunu yapmak için, oyuncu farenin sol düğmesine bastığında farenin konumunu izleyin. Fareyi hareket ettirdiklerinde, oyuncunun x koordinatını güncelleyin. Geçerli fare konumu ile izlediğiniz ilk konum arasındaki farka göre değişmelidir, mouse_start_pos.

# Olayları işle
için etkinlik içinde pygame.event.get():
eğer event.type == pygame. ÇIKIŞ YAPMAK:
pygame.quit()
çıkış yapmak()

eğer event.type == pygame. FARE DÜĞMESİ AŞAĞI:
eğer olay.düğmesi == 1:
mouse_start_pos = pygame.mouse.get_pos()

eğer event.type == pygame. FARE HAREKETİ:
eğer 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 -= mouse_offset_x
mouse_start_pos = mouse_current_pos

Daha Fazla Kamera Özelliği Ekleme

Kayan kamera efektinin yanı sıra, oyun deneyimini geliştirmek için kamerayla ilgili başka özellikler de ekleyebilirsiniz. Böyle bir özellik, oyuncunun oyun dünyasını yakınlaştırmasına veya uzaklaştırmasına olanak tanıyan yakınlaştırmalı bir kamera efektidir. Oyun penceresinin boyutunu değiştirerek ve ekranda çizilen nesneleri ölçeklendirerek bu efekti elde edebilirsiniz.

Bunu yapmak için, oyunun mevcut yakınlaştırma seviyesini saklayacak bir yakınlaştırma değişkeni tanımlayın. Başlangıç ​​değerini yakınlaştırma olmadığını temsil eden 1.0 olarak ayarlayın. Ardından, geçerli yakınlaştırma düzeyine göre bir nesnenin ölçeklenmiş boyutunu hesaplayacak bir işlev tanımlayın.

yakınlaştırma = 1.0

kesinget_scaled_size(boyut):
geri dönmek int (boyut * yakınlaştırma)

Ardından, ekranda çizilen nesnelerin konumlarını ve boyutlarını kullanarak güncelleyin. get_scaled_size işlev. Örneğin, oynatıcının konumunu ve boyutunu şu şekilde güncelleyebilirsiniz:

player_rect = pygame. Doğru(
get_scaled_size (player_x + camera_offset_x),
get_scaled_size (oyuncu_y),
get_scaled_size (PLAYER_WIDTH),
get_scaled_size (PLAYER_HEIGHT)
)

Benzer şekilde, statik platformların konumlarını ve boyutlarını aşağıdaki gibi güncelleyin:

dikdörtgen_1_draw_pos = pygame. Doğru(
get_scaled_size (rectangle_1.x + camera_offset_x),
get_scaled_size (dikdörtgen_1.y),
get_scaled_size (dikdörtgen_1.genişlik),
get_scaled_size (dikdörtgen_1.yükseklik)
)

pygame.draw.rect (ekran, RECTANGLE_COLOR_1, dikdörtgen_1_draw_pos)

dikdörtgen_2_draw_pos = pygame. Doğru(
get_scaled_size (rectangle_2.x + camera_offset_x),
get_scaled_size (dikdörtgen_2.y),
get_scaled_size (dikdörtgen_2.genişlik),
get_scaled_size (dikdörtgen_2.yükseklik)
)

pygame.draw.rect (ekran, RECTANGLE_COLOR_2, dikdörtgen_2_draw_pos)

Oynatıcı düğmesine bastığında yakınlaştırma düzeyini 0,1 artırın veya azaltın. = veya - sırasıyla anahtar. Geçerli yakınlaştırma düzeyine göre oyun penceresinin yeni boyutunu ayarlayın. Bunu yapmak için, klavye girişlerini işleyen olay döngüsünün içine aşağıdaki kodu ekleyin:

eğer event.type == pygame. TUŞ AŞAĞI:
eğer event.key == pygame. K_EQUALS:
yakınlaştırma += 0.1

ekran = pygame.display.set_mode((
int (WINDOW_WIDTH * yakınlaştırma),
int (WINDOW_HEIGHT * yakınlaştırma)
))
elif event.key == pygame. K_EKSİ:
yakınlaştır -= 0.1

eğer yakınlaştırma < 0.1:
yakınlaştırma = 0.1

ekran = pygame.display.set_mode((
int (WINDOW_WIDTH * yakınlaştırma),
int (WINDOW_HEIGHT * yakınlaştırma)
))

Yukarıdaki kod ile PyGame oyunumuza başarılı bir şekilde yakınlaştırma kamerası efekti eklediniz. Bu özelliği kayan kamera efektiyle birleştirerek dinamik ve ilgi çekici bir oyun deneyimi yaratabilirsiniz.

Kamera Hareketleriyle Oynanışı İyileştirme

Bir PyGame oyununa kayan bir kamera eklemek, yalnızca görsel deneyimi geliştirmekle kalmaz, aynı zamanda oynanışı da iyileştirir. Oyuncunun oyun dünyasını daha fazla görmesini sağlar, çevrelerini daha iyi anlamalarını sağlar ve gezinmeyi kolaylaştırır.

Patlamaları veya depremleri simüle etmek için yakınlaştırma ve uzaklaştırma veya ekranı sallama gibi özel efektler oluşturmak için kamera hareketini de kullanabilirsiniz.