2B kiremit tabanlı bir köprü altında geçen tekne RTS


10

2D döşeme tabanlı RTS yazıyorum. Ve bir 'sözde 3D' özelliği eklemek istiyorum - nehirler üzerinde köprüler.

Henüz herhangi bir kodlamaya başlamamıştım, sadece çarpışma algılama modeline nasıl uyduğunu düşünmeye çalışıyorum. Köprünün altından geçen bir tekne ve köprünün üzerinden hareket eden bir birim nihayet haritada aynı hücreyi işgal edecektir. Onları çarpışmadan nasıl çıkarabilirim?

Böyle bir sorunu çözmek için ortak bir yaklaşım var mı? Yoksa bunu yapmak için 3B bir dünya mı uygulamam gerekiyor?


Eğer kiremit tabanlı bir sistem yapıyorsanız, her zaman için bir "isOccupied" yöntemi gibi bir şey ekleyebilirsiniz. Sadece köprünün altından ve üstünden kontrol etmesini sağlayın.
Benjamin Danger Johnson

2
yer birimleri su birimleriyle etkileşime girmezse, her iki birim kümesi için ayrı ayrı çarpışmalar gerçekleştirebilirsiniz. Ve belki de limandaki bir teknenin, tekneye giren oyuncu / bir npc gibi etkileşimlere izin veren bir zemin birimi olduğunu düşünün.
GameAlchemist

Yanıtlar:


7

Temel olarak üçüncü bir boyut oluşturmanız gerekecek, ancak en basit durumda sadece iki değerden oluşabilir: "yerde / köprüde" ve "suda / köprü altında".

İlham, Gelişmiş Stratejik Komut'un yaptığı gibi bulunabilir: Birimler belirli bir yükseklik seviyesini işgal eder, ancak başka türlü yapmalarına izin veren belirli özellikler (örneğin, uçak pistleri) olmadığı sürece türlerine uyan yükseklik seviyeleri üzerinde hareket edebilir ve bunları değiştirmek genellikle bazı yükseklik seviyelerinde veya diğerlerinde cezalar olmak üzere hareket puanlarına mal olur. Bir karo, her biri farklı bir yükseklik seviyesinde olduğu sürece herhangi bir sayıda birim tarafından işgal edilebilir.

ASC durumunda, seviyeler:

  • Uzay
  • yüksek irtifa (bombalama)
  • orta irtifa (önleme)
  • kara saldırı yüksekliği
  • yer (çoğu yer birimi ve hovercraft, su üzerinde bile)
  • Su
  • kısmen batık (denizaltılar)
  • batık ("gizli" denizaltılar)

9

Her döşemeye düzeyini belirten basit bir özellik ekleyebilirsiniz.

Yani mesela:

tileA.layer = 0 // Will be at the bottom
tileB.layer = 1 // Will be above level 0, on top of it. 

// Add tiles to layered list
List<List<Tile>> tiles = new List<List<Tile>>();
tiles[0].add(tileA);
tiles[1].add(tileB);

// Draw 'em in the right order!
void Draw(List<List<Tile>> tiles) {
    foreach( var listOfTiles in tiles ) {
        foreach( var tile in listOfTiles ) {
            tile.draw();
        }
}

Artık karolarınızı katman değerlerine göre sıralayabilir ve alttan çizebilirsiniz -> üst! Bu, oyununuzda belirli bir derinliğe sahip gibi görünmenizi sağlayacaktır. Çoğu karo motoru bunu destekler. Ekleyebileceğiniz bir başka harika şey, dokularınıza şeffaflık sağlamaktır, böylece alt katmanı görebilirsiniz.

Bu örneğin su ile yapılabilir - lvl 1'deki suyu ve daha sonra lvl 0'daki okyanus tabanını hayal edin. Su dokusu biraz şeffafsa, okyanus tabanını yukarıdan görebilirsiniz.


@aleguna Endişelenme! Yardım etmek sadece eğlenceli. :)
Zolomon
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.