Saya mencoba menghitung ubin mana yang dapat "dilihat" unit tertentu jika menghadap ke arah tertentu pada peta ubin (dalam rentang dan sudut tertentu menghadap). Cara termudah adalah dengan menggambar sejumlah ubin keluar dan raycast ke setiap ubin. Namun, saya berharap sesuatu yang sedikit lebih efisien. Sebuah gambar mengatakan seribu kata:
Titik merah adalah unit (yang menghadap ke atas). Tujuan saya adalah menghitung ubin kuning. Blok hijau adalah dinding (dinding di antara ubin, dan mudah untuk memeriksa apakah Anda dapat melewati di antara dua ubin). Garis biru mewakili sesuatu seperti metode "raycasting" yang saya bicarakan, tetapi saya lebih suka tidak harus melakukan ini.
EDIT: Unit hanya bisa menghadap utara / selatan / timur / barat (0, 90, 180, atau 270 derajat) dan FoV selalu 90 derajat. Harus menyederhanakan beberapa perhitungan. Saya berpikir ada semacam algoritma berbasis rekursif / ish / stack / berbasis antrian, tapi saya tidak bisa mengetahuinya.
Terima kasih!
Jawaban:
Yay saya menemukan makalah penelitian!
Dalam hal biaya komputasi Shadow Mapping tampaknya pemenang yang cukup jelas.
Algoritma yang digunakan dapat ditemukan di sini dan implementasi C # dapat ditemukan di sini , bit yang relevan di bawah ini.
sumber