Roguelike'de görüş alanı simetrisini nasıl sağlayabilirim?


10

Bir Roguelike üzerinde çalışıyorum ve bunun için sağlam bir daire içindeki her noktaya Bresenham çizgilerini çizmekten oluşan bir ışın izleme / döküm görüş alanı (FoV) algoritması oluşturdum. Artefakt içermez (ve makul derecede etkilidir), ancak benim için önemli bir gereksinim eksik: simetri (bir canavarı görebiliyorsanız, sizi de görebilmelidir).

resim açıklamasını buraya girin

İşte kodumun simetrik olmayan davranışına bir örnek. Sol resimde bir köşede duruyorum (kırmızı 'X' blokları = duvar). Sağ üst karoları görebiliyorum. Ancak, bu döşemelerden birine (sağ görüntü) geçersem, artık geldiğim döşemeyi göremiyorum.

Bence İzin Verici Bir Görüş Alanından sonra olabilirim , ama sadece Roguebasin makalesi simetriye izin vermesini önerdiğinden. Simetri elde etmenin alternatif yolları var mı?


1
Görünürlüğü test ederken göz noktasının ışını yayınladığınız konumla aynı konumda olduğundan emin olun.
MichaelHouse

Yanıtlar:


8

Göz tek sabit noktadayken herhangi bir noktayı görebildiğinizde bir kare eklediğiniz görülüyor.

Bununla birlikte, sadece ortasını görebildiğinizde bir kare eklemelisiniz ("göz" de ortada olduğu varsayılarak). Ya da başlangıç ​​karesinin her köşesinden test edilen karenin köşelerine ışınlar çizebilirsiniz, eğer herhangi bir tanesini görebilirsiniz.

Anahtar nokta, bir karenin hit kutusunun da gözün olması gereken tüm yerler olması gerektiğidir.

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.