Bir kamera ekleyerek Python Arcade oyunlarıyla oyun deneyiminizi geliştirin.

Python'un Arcade kitaplığı, 2B oyunlar oluşturmak için güçlü ve kullanıcı dostu bir çerçevedir. Oynanışı ve kullanıcı deneyimini büyük ölçüde artırabilen önemli özelliklerden biri, bir kameranın eklenmesidir. Oyununuza bir kamera eklemek, oyuncunun daha büyük oyun dünyalarını keşfetmesini, belirli alanlara odaklanmasını veya hareket halindeki nesneleri izlemesini sağlayan dinamik görüntü alanı manipülasyonuna izin verir.

Kameranın bakış açısını hareket ettirerek görsel olarak çekici efektler yaratabilir, oyun mekaniğini geliştirebilir ve daha sürükleyici bir oyun deneyimi sağlayabilirsiniz.

Basit Bir Oyun Yaratın

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

pip yükleme çarşı

Şimdi, oyuncunun ok tuşlarını kullanarak sola ve sağa hareket edebilen bir karakteri kontrol ettiği basit bir yan kaydırma oyunu oluşturarak başlayın.

Bu makalede kullanılan kod bu makalede mevcuttur. GitHub deposu ve MIT lisansı altında ücretsiz olarak kullanabilirsiniz.

instagram viewer

Ek olarak, oyuncunun gezinmesi için bir engel ekleyebilirsiniz.

içe aktarmak oyun makinesi

EKRAN_GENİŞLİK = 800
EKRAN_YÜKSEKLİK = 600
HAREKET_HIZ = 5

sınıfBenim oyunum(oyun makinesi. pencere):
kesin__içinde__(öz, genişlik, yükseklik):
super().__init__(genişlik, yükseklik)
self.player_x = genişlik // 2
self.player_y = yükseklik // 2

kesinkurmak(kendi):
arcade.set_background_color (arcade.color. GÖKYÜZÜ MAVİ)

kesinon_draw(kendi):
arcade.start_render()
arcade.draw_circle_filled (self.player_x, self.player_y, 20, çarşı.renk. KIRMIZI)
çarşı.draw_rectangle_filled(400, 200, 80, 40, çarşı.renk. YEŞİL)

kesingüncelleme(öz, delta_time):
geçmek

kesinon_key_press(self, key, değiştiriciler):
eğer anahtar == çarşı.key. SOL:
self.player_x -= MOVEMENT_SPEED
elif anahtar == çarşı.key. SAĞ:
self.player_x += MOVEMENT_SPEED

eğer __isim__ == "__ana__":
oyun = Oyunum (SCREEN_WIDTH, SCREEN_HEIGHT)
oyun.setup()
çarşı.run()

Kamerayı Kurma

Oyuna bir kamera eklemek için, Kamera kameranın konumunu ve hareketini yöneten sınıf. Bu sınıfın aşağıdaki gibi öznitelikleri olacaktır: kamera_x Ve kamera_y kameranın koordinatlarını saklamak için.

sınıfKamera:
kesin__içinde__(kendi):
self.camera_x = 0
self.camera_y = 0

Klavye Girişleri ile Kamera Hareketi

Ardından, oyunun on_key_press kamera dahil etme yöntemi oyuncunun girişlerine dayalı hareket. Oynatıcı sola veya sağa hareket ettiğinde kameranın konumunu buna göre güncelleyebilirsiniz. Ayrıca, oyun nesnelerini işlerken kameranın konumunu hesaba katmak için çizim kodunu ayarlayın.

sınıfBenim oyunum(oyun makinesi. pencere):
kesin__içinde__(öz, genişlik, yükseklik):
super().__init__(genişlik, yükseklik)
self.camera = Kamera()
self.player_x = genişlik // 2
self.player_y = yükseklik // 2

kesinon_key_press(self, key, değiştiriciler):
eğer anahtar == çarşı.key. SOL:
self.player_x -= MOVEMENT_SPEED
self.camera.camera_x -= MOVEMENT_SPEED
elif anahtar == çarşı.key. SAĞ:
self.player_x += MOVEMENT_SPEED
self.camera.camera_x += MOVEMENT_SPEED

kesinon_draw(kendi):
arcade.start_render()
çarşı.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, çarşı.renk. KIRMIZI)
çarşı.draw_rectangle_filled(400, 200, 80, 40, çarşı.renk. YEŞİL)

Mouse Girişleri İle Kamera Hareketi

Klavye girişlerine ek olarak, fare girişlerine göre kamera hareketini de etkinleştirebilirsiniz. Örneğin, oynatıcının ekranı sürükleyerek kamerayı kaydırmasına izin verebilirsiniz. Bunu başarmak için, on_mouse_drag farenin hareketine göre kameranın konumunu güncelleme yöntemi.

sınıfBenim oyunum(oyun makinesi. pencere):
kesinon_mouse_drag(self, x, y, dx, dy, düğmeler, değiştiriciler):
eğer düğmeler == çarşı. MOUSE_BUTTON_LEFT:
self.camera.camera_x -= dx
self.camera.camera_y -= dy

Ek Özellikler Dahil

Oyununuza bir kamera eklemek, ek özellikler ve efektler için bir olasılıklar dünyasının kapılarını açar. İşte kamera sistemini kullanarak oyununuzu nasıl daha da geliştirebileceğinize dair birkaç örnek.

Yakınlaştırma İşlevselliği

Yakınlaştırma işlevini uygulamak için bir yakınlaştır değişken Kamera sınıflandırın ve değiştirin on_mouse_scroll fare tekerleği hareketine bağlı olarak yakınlaştırma seviyesini güncelleme yöntemi. Ayrıca ayarlamanız gerekir set_viewport yakınlaştırma seviyesini dikkate almak için parametreler.

sınıfKamera:
kesin__içinde__(kendi):
self.camera_x = 0
self.camera_y = 0
kendini yakınlaştırma = 1.0

sınıfBenim oyunum(oyun makinesi. pencere):

kesinon_mouse_scroll(öz, x, y, kaydırma_x, kaydırma_y):
self.camera.zoom += scroll_y * 0.1

kesinon_draw(kendi):
arcade.start_render()
çarşı.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, çarşı.renk. KIRMIZI)
çarşı.draw_rectangle_filled(400, 200, 80, 40, çarşı.renk. YEŞİL)

Pürüzsüz Kamera Hareketi

Daha düzgün kamera hareketi elde etmek için doğrusal enterpolasyon (lerp) adı verilen bir enterpolasyon tekniği uygulayabilirsiniz. Değiştirmek güncelleme lerp kullanarak kamerayı kademeli olarak bir hedef konuma doğru hareket ettirme yöntemi. Bu yumuşak bir geçiş efekti yaratır.

sınıfKamera:
kesin__içinde__(kendi):
self.camera_x = 0
self.camera_y = 0
self.target_x = 0
self.target_y = 0
self.lerp_speed = 0.1

kesingüncelleme(kendi):
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)

sınıfBenim oyunum(oyun makinesi. pencere):

kesingüncelleme(öz, 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()

kesinon_draw(kendi):
arcade.start_render()
çarşı.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, çarşı.renk. KIRMIZI)
çarşı.draw_rectangle_filled(400, 200, 80, 40, çarşı.renk. YEŞİL)

Kamera Kısıtlamaları

Kameranın belirli sınırların ötesine geçmesini önlemek için kısıtlamalar getirebilirsiniz. Örneğin minimum ve maksimum kamera konumu tanımlayabilir ve kameranın bu sınırlar içinde kalmasını sağlayabilirsiniz.

sınıfKamera:
kesin__içinde__(kendi):
self.camera_x = 0
self.camera_y = 0
self.min_x = 0
self.max_x = 800
self.min_y = 0
self.max_y = 600

kesingüncelleme(kendi):
self.camera_x = maks (self.min_x, min (self.camera_x, self.max_x))
self.camera_y = maks (self.min_y, min (self.camera_y, self.max_y))

sınıfBenim oyunum(oyun makinesi. pencere):

kesingüncelleme(öz, 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()

kesinon_draw(kendi):
arcade.start_render()
çarşı.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, çarşı.renk. KIRMIZI)
çarşı.draw_rectangle_filled(400, 200, 80, 40, çarşı.renk. YEŞİL)

Bunlar, Python Arcade oyunlarınıza ek özellikler ve efektler eklemek için kamera sisteminden nasıl yararlanabileceğinize dair birkaç örnektir.

Python tabanlı oyunlarınıza başka birçok ek özellik de ekleyebilirsiniz. Örneğin, kamera açıldığında konumunu hatırlamasını sağlayabilirsiniz. oyuncu farklı bir seviyeye geçer. Bu, seviyeler arasında geçiş yaparken görünümün aynı kalmasını sağlayarak oyuncu için sorunsuz ve tutarlı bir deneyim sağlar.

Bir Kamera Sistemi İçin En İyi Uygulamalar

Python Arcade oyununuzda bir kamera sistemi uygularken, optimum işlevsellik ve sorunsuz bir oyuncu deneyimi sağlamak için en iyi uygulamaları takip etmeniz çok önemlidir. Akılda tutulması gereken bazı temel yönergeler şunlardır:

  • Aşırı kamera hareketinden kaçının: Kamera oyununuza dinamik öğeler ekleyebilse de, bir denge kurmak ve aşırı kamera hareketinden kaçınmak çok önemlidir. Kameranın konumunu sürekli değiştirmek, oyuncuların yönünü şaşırtır ve oyun dünyasında gezinmelerini zorlaştırabilir.
  • Farklı çözünürlüklerde ve en boy oranlarında test edin: Farklı cihazlarda ve yapılandırmalarda iyi çalıştığından emin olmak için kamera sisteminizi çeşitli ekran çözünürlüklerinde ve en boy oranlarında test etmeniz çok önemlidir. Bu, görünüm alanı ölçeklendirme, nesne konumlandırma veya en boy oranı ayarlamalarıyla ilgili sorunları belirlemenize yardımcı olacaktır.
  • İşlemeyi optimize edin: Kamera sistemi, özellikle büyük oyun dünyalarını veya çok sayıda nesneyi işlerken potansiyel olarak oyun performansını etkileyebilir. İşlemeyi optimize etmek için, hangi nesnelerin kameranın görüş alanı dışında olduğunu belirleyin ve bunları işleme dışında bırakın.
  • Edge kılıflarını kullanın: Kameranın sınırlar, çarpışma algılama veya üst üste binen nesneler gibi belirli senaryolarla karşılaşabileceği uç durumlara dikkat edin. Kamera sisteminin bu durumları zarif bir şekilde ele aldığından ve oyun ortamıyla sınırlamaları veya etkileşimleri belirtmek için yumuşak geçişler veya uygun görsel ipuçları sağladığından emin olun.

Bu en iyi uygulamaları takip ederek Python Arcade oyunlarınıza sorunsuz bir şekilde entegre olan sağlam ve kullanıcı dostu bir kamera sistemi oluşturabilirsiniz.

Kamerayı Kullanarak Oyunları Daha Eğlenceli Hale Getirin

Python Arcade oyunlarınıza bir kamera ekleyerek, oyuncunun oyunun içine dalmasını ve katılımını büyük ölçüde artırabilirsiniz. İster geniş oyun dünyaları yaratıyor, ister kritik alanlara odaklanıyor veya hareketli nesneleri takip ediyor olsun, kamera sistemi oyun geliştiricileri için güçlü bir araç sağlar.

Kamera hareketi, yakınlaştırma ve ek efektlerden yararlanarak oyuncuları büyüleyen ve daha fazlası için geri gelmelerini sağlayan büyüleyici deneyimler yaratabilirsiniz.