Bagaimana kita bisa membuat karakter kita bergerak dengan lancar melintasi ubin? Dia bergerak ubin demi ubin, tapi itu terlihat tidak profesional. Selain itu, saat Anda menahan tombol panah, ia membuka layar. Bagaimana kita dapat mencegah hal itu terjadi?
8
Jawaban:
Gerakan halus dapat dicapai dengan beberapa cara. Dan itu benar-benar tergantung pada jenis gerakan apa yang ingin Anda izinkan.
Kode palsu:
Di mana
MoveTowards
hanya mengambil posisi saat ini dan menambahkan sebagian jarak antara itu dan posisi target.Menahan tombol panah untuk memindahkan karakter juga dapat diimplementasikan dalam beberapa cara berbeda. Kemungkinan yang Anda lakukan adalah sesuatu seperti:
Ini memang akan menyebabkan karakter untuk zip di layar. Karena Anda akan memperbarui posisi berkali-kali per detik. Cara yang sedikit lebih baik untuk mengimplementasikan ini adalah dengan menambahkan penundaan. Sesuatu seperti
Ini akan menambah waktu tunda dan hanya memperbarui posisi ubin ketika
movementDelay
nilai telah terpenuhi.sumber
Saya dapat mengidentifikasi dua masalah. Yang pertama terkait dengan gerakan halus dan yang kedua terkait dengan karakter zip dari layar.
Untuk membuat gerakan halus, Anda dapat menggunakan teknik yang disebut Linear Interpolasi atau (LERP) untuk memuluskan gerakan. Pada dasarnya cara kerjanya adalah antara titik awal dan titik akhir Anda menghitung satu set jarak yang semakin kecil untuk meniru gerakan halus dan melambat ketika titik akhir hampir tercapai.
Contoh paling sederhana dari fungsi ini adalah:
Saat karakter bergerak lebih dekat ke titik 2 secara bertahap akan melambat. Catatan meskipun mereka tidak akan pernah benar-benar menyentuh titik 2 tetapi mendekati tanpa batas. Anda harus memperbaiki ini dan jika pemain kurang dari jarak yang sangat kecil dari titik 2, kami dapat mempertimbangkan pemain berada di titik 2.
Masalah kedua yang Anda sebutkan terkait dengan karakter Anda terbang di layar. Ini adalah hasil dari input yang dibaca setiap penyegaran loop game yang dikombinasikan dengan gerakan instan antar ubin.
Idealnya untuk menyelesaikan ini, dalam kode Anda, Anda perlu memutuskan
sumber