Saya akan memposting tautan ke blog Pangkalan Asteroid di musuh Walker ketika saya perhatikan karmington sudah terhubung dengan artikel Gamasutra dalam komentar.
Mungkin ada baiknya memberikan ini lebih banyak visibilitas dan penjelasan sebagai jawaban dalam dirinya sendiri sekalipun.
Caranya adalah raycast . Ini memungkinkan kode Anda memindai sepanjang garis untuk tabrakan.
Untuk membuat Walker sejajar dengan permukaan, mereka menembakkan dua sinar ke bawah di medan, satu dari sisi kiri Walker dan satu dari kanan (garis merah dan kuning di atas).
Dari setiap objek RaycastHit2D, Anda bisa mendapatkan vektor normal yang mengarah tegak lurus ke permukaan (garis magenta dan hijau). Dengan rata-rata normals dari dua hit, Anda mendapatkan orientasi yang sesuai untuk karakter Anda yang cukup mencerminkan medan yang mendasarinya (garis cyan).
Anda dapat menerapkan gaya ke bawah di sepanjang garis orientasi ini untuk menjaga karakter menempel pada medan (meskipun ini dapat menyebabkan beberapa geser jika gesekan rendah), atau secara manual posisikan karakter pada titik persimpangan sinar rata-rata seperti yang dilakukan dengan Walker.
Anda harus memadukan orientasi karakter secara bertahap agar karakter Anda tidak bergetar atau terlihat seperti robot (lihat bagaimana normal berubah dengan tajam ketika Walker melintasi sudut, tetapi tubuh bergerak dengan lancar).
Jika Anda memiliki sudut tajam di medan Anda, Anda mungkin ingin memiringkan sinar ini sedikit ke dalam - sehingga jika laba-laba berjalan melewati tepi tebing 90 derajat, sinar yang menggantung akan mengenai wajah tebing.
Tim Pangkalan Asteroid juga menembakkan sinar pendek ke arah gerakan Walker (tidak ditampilkan), yang menimpa sinar di sisi itu jika mengenai medan. Itu memastikan alat bantu jalan tidak macet saat berjalan ke sudut cekung 90 derajat.
Menurut dokumen, raycast 2D berbeda dari 3D di mana mendeteksi pendobrak di mana ray dimulai. Itu kedengarannya mencurigakan bagi saya, tetapi jika pengujian Anda mengonfirmasi ini, Anda ingin menggunakan layerMask untuk membatasi sinar hanya mendeteksi collider medan yang bisa dipanjat.