Saya mencoba menerapkan pathfinding sederhana, tetapi hasilnya kurang memuaskan daripada apa yang ingin saya capai. Masalahnya adalah unit dalam game seperti Starcraft 2 bergerak ke segala arah sedangkan unit dalam kasus saya hanya bergerak paling banyak 8 arah (gaya Warcraft 1) karena 8 arah ini mengarahkan ke node yang tersedia berikutnya (mereka bergerak dari ubin ke ubin tetangga berikutnya) . Apa yang harus saya lakukan untuk mencapai hasil seperti di Starcraft 2? Kecilkan ukuran ubin?
Pada gambar Anda dapat melihat garis horizontal ubin batu menjadi penghalang, dan jalur yang ditemukan ditandai sebagai ubin hijau. Garis merah adalah jalan yang ingin saya capai.
game-design
game-mechanics
path-finding
Kooi Nam Ng
sumber
sumber
Jawaban:
Untuk algoritma penelusuran jalur yang baik, menggunakan A * mungkin akan menjadi ide yang bagus, namun, untuk permainan sederhana yang tidak memerlukan penelusuran jalur yang canggih, efisien, atau efektif, cukup minta karakter bergerak menuju target dengan mencari tahu arah dari target harus memadai.
Yang dapat Anda lakukan adalah menghasilkan 'grafik visibilitas' (titik-titik apa yang terlihat dari setiap titik) dari simpul dan kemudian melakukan A * pada grafik. Ini berfungsi karena jalur terpendek akan selalu terletak pada grafik visibilitas.
Mengecilkan ukuran ubin dapat membantu Anda.
Sumber daya
Bacaan lebih lanjut
EDIT: Saya suka komentar @ MarkusvonBroady.
Sumber daya
Dari @MarkusvonBroady
Saya telah melakukan pencarian, menemukan yang berikut (yang dapat membantu Anda)
sumber
Mulai dari salah satu ujung jalur mentah, katakanlah
path[0]
, Anda dapat menghapuspath[1]
jika segmen terbentuk dengan menggabungkan titik-titikpath[0]
danpath[2]
TIDAK memotong dinding apa pun. Melangkah lebih jauh hingga segmen terakhir akan memberikan jalur yang lebih sederhana.Ini tidak hanya akan memperlancar jalur tetapi juga menghilangkan beberapa titik yang tidak berguna, seperti contoh api, 3 segmen garis lurus.
sumber