Bagaimana cara mendeteksi tepian?

18

Dalam permainan saya, saya ingin karakter saya dapat meraih dan memegang tepian, dan untuk dapat menarik diri jika ada ruang untuk melakukannya.

Bagaimana cara mendeteksi jika ada langkan, dan jika karakter memiliki cukup ruang untuk naik?

doppelgreener
sumber
Pertanyaan ini dibuat sebagai versi kanon dari dua pertanyaan sebelumnya. Lihat diskusi meta di sini .
doppelgreener
1
Juga, mengaitkan pertanyaan yang dibicarakan dalam meta: gamedev.stackexchange.com/questions/38066/… dan gamedev.stackexchange.com/questions/15491/…
MichaelHouse

Jawaban:

22

Video untuk Overgrowth Alpha 132 menunjukkan bagaimana mereka menerapkan panjat tebing.

Metode mereka harus bekerja di mesin apa pun, bahkan mesin 2D di mana Anda akan menggunakan persegi panjang dan lingkaran, bukan silinder dan bola.

Deteksi langkan mereka melibatkan dua bagian:

Deteksi dinding (menggunakan bola)

Permainan memeriksa apakah pemain saat ini bertabrakan dengan dinding. Jika ada dinding, mungkin ada tepian yang bisa dipegang pemain. Bagian kedua mengambil alih untuk menganalisis tepian.

Deteksi langkan (menggunakan silinder)

Jika pemain menghubungi dinding, sebuah silinder disapu ke bawah dari jarak tertentu di atas posisi pemain hingga menyentuh langkan. Ini menentukan tiga hal:

  • Apakah ada langkan di atas pemain
  • Tinggi langkan
  • Apakah ada ruang bagi pemain untuk naik ke langkan, mengingat silinder menempati ruang horizontal yang sama dengan pemain.
doppelgreener
sumber
Metode luar biasa, dan contoh fantastis +1
Bugster
"Silinder disapu ke bawah dari jarak tertentu di atas posisi pemain" Jarak berapa? Ini sangat penting ketika berhadapan dengan lingkungan dalam ruangan (Anda akan memotong langit-langit secara tidak sengaja).
Tara
1
@Dudeson di masa lalu saya telah menggunakan raycast untuk awalnya menemukan permukaan langkan, sebelum menindaklanjuti dengan pemeriksaan volume untuk memverifikasi bahwa ada cukup ruang yang tidak terhalang untuk naik. Karena raycast bersifat terarah, ia tidak membaca langit-langit sebagai positif palsu - meskipun masih bisa tersangkut di lantai berikutnya jika asalnya terlalu tinggi .. Metrik yang tepat akan tergantung pada banyak rincian dari setiap permainan - the ukuran karakter, jangkauan lengan, jarak bebas dalam desain level, kecepatan jatuh, dll.
DMGregory
@ DMGregory Ide bagus dengan pemeran ray!
Tara