Yukarıdan Aşağıya Nişancıda Düşman Yumurtlama Yöntemi


20

Ben benzer bir top-down shooter üzerinde çalışıyorum DoDonPachi , Ikaruga vb dünyada kamera hareketi kameranın görünür bölgesinin içinde hareket edebilmek çalar ile otomatik olarak işlenir.

Yol boyunca, düşmanlar yol boyunca belirli noktalarda ortaya çıkacak şekilde yazılır. Bu basit gibi görünse de, bu noktaları tanımlamanın iki yolunu görebiliyordum:

  1. Kameranın konumu: kamera noktalardan geçerken yumurtlamayı 'tetikler'
  2. Yol boyunca geçen süre: "30 saniye içinde 2 düşman doğur"

Her iki durumda da, düşmanın davranışının yanı sıra kameraya göre konumlar da tanımlanır.

Gördüğüm gibi, bu noktaları tanımlama şekliniz 'seviye editörünün' veya sizin neyinizde nasıl çalışacağını doğrudan etkileyecektir.

Bir yaklaşımın diğerine göre herhangi bir faydası olur mu?

Yanıtlar:


7

Spawn konumlarını aslında arka plan haritasına bir tür harita düzenleyiciden görülebilen düğümler olarak yerleştirmenizi öneririm. İki değişkenli bir shmup spawn'ı temsil edebilirsiniz:

  1. İlk göründükleri konum, en iyi nokta olarak görselleştirilir
  2. Bunları ortaya çıkarmanız gerektiğinde alt ekrandan mesafe.

Ardından, ekranın alt kısmından uzaklığı, yumurtlama düğümünden aşağıya doğru bakacak dikey bir çizgi olarak görselleştirebilirsiniz (bu, düşmanın gri renkli bir versiyonu olarak görülebilmektedir). Ekranın altı bu çizgiye dokunduğunda ortaya çıkar. Bu, tüm düşman düzenlemelerini bir çeşit görsel editörde tamamen yapmanıza ve oyunun tüm akışına genel bir bakış sunmanıza olanak tanır.


Re 2) Tabii ki, ihracatta bunu tersine çevirmek zorunda kalacaksınız (yani her satırda, hangi yumurtlama noktalarının aktif hale gelmesi gerektiği, bu sistemde olduğu gibi, bazı yumurtlama noktalarının görünür hale gelmeden önce farkında olmanız gerekir. bu gerçekten de en mantıklı yoldur
Kaj

1
Not olarak, düğümleri toplu olarak kolayca değiştirmenizi sağlayan bir düzenleyici kullandığınızdan emin olun. Shmup seviyenizi ayarlarken, düşmanları ekleyip çıkaracaksınız ve seviyenizin ortasında sürekli zamanlamalar yapacaksınız ve tüm varlıklarınızı birer birer kaydırmanız sizi öldürecek.
ZorbaTHut

Düzenlemeyi çok daha kolaylaştıracağı için bu fikri seviyorum, ki bu her zaman bir artı
Chris Waters

7

Yine de, büyük bir domino etkisi hakkında endişelenmenize gerek kalmadan yolu değiştirebileceğiniz için kameranın yumurtlama konumu muhtemelen daha esnek olacaktır.

Zaman yumurtlama ile giderseniz, o zaman yol eklemek veya kaldırmak için büyük bir acı olacaktır çünkü birçok düşman yumurtlamasını değiştirmeniz gerekecektir.

Gördüğüm bir diğer konu kamera hızını değiştirmek. Sadece kamerayı biraz daha hızlı veya yavaş hareket ettirdiğiniz için düşman yumurtlamalarını değiştirmek istiyor musunuz? Ayrıca, sadece spawn süreleri veya onlar için tweaks bulmak için seviye boyunca korkunç bir miktar oynamak gerekir.


2

Kesinlikle "kamera" hareket değil tavsiye ederim; Oyuncu ve düşmanları her zaman aynı sabit koordinat alanında düşünün. Düşmanlar ve arka plan kaydırma, bağımsız bir zaman çizelgesiyle eşleştirilmelidir. Tüm matematiği kolaylaştırır.


Sana yarı yarıya katılıyorum. Kesinlikle shmup fiziği sahte ve geminin aslında ilerlememesine dayanıyor. Bununla birlikte, göz önünde bulundurmanız gereken bir kamera vb.Gibi soru hala geçerlidir
Iain

Gerçekten de, bu soruyu geçersiz kılmaz. Yolculuk mesafesine karşı (sanal) zaman. Müzikçaları ileri veya geri hareket ettirmek sadece kavramsal bir katmandır. Ayrıca, matematiği daha kolay hale getirmek için onları ayırmak, düşmanları arka plana (taretler) koymak, arka plan nesnelerini kullanmaktan veya arka planda harcanabilir olmak gibi diğer şeyleri çok daha zorlaştırabilir.
Kaj

1

Kamera pozisyonuna giderdim. Harita dosyanızdaki bazı grafiklerle (kavisli bir yolu izleyen düşmanlar gibi) bir düşman yolunun eşleşmesini istiyorsanız zaman kullanmak oldukça zorlaşacaktır. Ayrıca, spawnpoint'leri değiştirmeden ekranı hızlandırmanızı sağlar.
Flipside, ilerlemeyi hızlandırmanın düşmanları daha hızlı hale getirmesidir. Bu bir artı (hızlandırma güçlük olurdu) veya negatif (kaydırma hızı pacing'i etkiler) olarak düşünülebilir.


1

Ayrıca bir uzay shooter oyunu üzerinde çalışıyorum. Yaptığım şey GameController adında boş bir gameobject kullandım. yumurtlama bölümünü kontrol eden GameController.cs adlı bir komut dosyası bileşeni ekledi,

  • Yumurtlama noktalarının bir listesini sakla [dizi]
  • Her düşmana belirli bir ağırlık ve puan verin. Eğer bir düşmanın yüksek ağırlığı varsa, düşman yumurtlama oranını kontrol eden her seviyede iyi bir olasılık elde etme şansı vardır.
  • Sonra her zaman Geçerli seviye ve Seçim rastgele bir sayı kontrol edin, eğer sayı ağırlıktan azsa, ilgili düşmanı ortaya çıkarın. Umarım yardımcı olmuştur.

http://www.youtube.com/watch?v=VqFJsU63GRo


0

Onları büyük harita arka planına yerleştirirdim ve ilk hareket yollarını bu haritaya eklerdim. Bu şekilde, hem yolu hem de zamanlamayı ayrı ayrı değiştirmek yerine kamera yolunu daha sonra anlamlı bir şekilde değiştirebilirim.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.