Dalam permainan platformer berbasis fisika 2D yang memiliki tangga di dalamnya, bagaimana Anda menentukan apakah pemain bergerak disebabkan oleh lompatan atau dia menaiki tangga, sehingga Anda tahu animasi apa yang harus dimainkan?
Dan secara umum, jelas vektor arah tidak cukup untuk menentukan animasi yang akan diputar: bagaimana Anda juga menentukan penyebab gerakan (sehingga Anda tahu sprite yang tepat untuk digunakan)?
physics
sprites
movement
platformer
Paul Manta
sumber
sumber
Jawaban:
Saya memiliki masalah logika pribadi secara teratur yang sepertinya Anda ungkapkan di sini. Terkadang Anda melihat logika dan pemrograman dari arah yang salah sepenuhnya. Dalam hal ini, Anda tampaknya tidak menyadari bahwa sejak awal Anda tahu mana yang terjadi, karena kode logika. Anda seharusnya sudah tahu, secara pemrograman, apakah dia ada di tangga atau tidak.
Pikirkan itu (seperti yang saya katakan, saya sering mengalami masalah ini). Logika permainan seharusnya tahu Anda berada di tangga, seandainya Anda menjadi programmer yang cerdas. Untuk penjelasan yang lebih baik, saya memiliki tipe arsip file, dan menyia-nyiakan sekitar satu jam sehari mencoba mencari cara untuk mendapatkan ukuran data dan saya tidak pernah berhenti untuk berpikir bahwa, ketika saya memuat dalam file, saya sekarang tahu ukurannya: P.
Alasan mengapa ini berhubungan sangat eksklusif, adalah bahwa Anda melihatnya sebagai "Sekarang saya di udara, bagaimana saya mencari tahu apakah saya di tangga atau melompat?" ... Ketika Anda harus benar-benar pikirkan "Saya akan naik ke udara, tetapi dengan metode yang PERTAMA, sehingga saya dapat menggunakannya untuk penggunaan animasi."
sumber
OnJump()
ubahjumping
boolean Anda menjadi true, dan kemudian jika Anda berada di udara danjumping
salah, maka Anda jatuh atau menaiki tangga, dll.Sistem fisika tidak tahu atau tidak peduli mengapa pemain bergerak ke arah tertentu. Ini adalah gim Anda yang menyebabkan sistem fisika menggerakkan pemain ke arah itu, dan karenanya merupakan tanggung jawab gim Anda untuk melacaknya. Entitas pemain harus memiliki beberapa status di atasnya yang akan memberi tahu apakah itu melompat, memanjat, berlari, dll. Anda seharusnya tidak mencoba untuk mencari tahu ini berdasarkan apa yang terjadi dengan sistem fisika.
sumber
Tampaknya peristiwa apa pun yang dipicu pada tabrakan yang menetapkan kecepatan vertikal pemain juga dapat digunakan untuk menetapkan bendera yang menentukan animasi apa yang akan digunakan.
Jika Anda menggunakan pustaka pihak ke-3 yang terlalu ketat dengan info apa yang diberikannya, Anda dapat mengelilingi tangga dengan persegi panjang dan jika pemain bergerak ke atas dan terkandung dalam persegi panjang itu maka lakukan animasi pendakian.
sumber
Saat mengatur kecepatan lompat, atur juga status karakter ke STATE_JUMPING. Melakukan ini, Anda selalu tahu di negara mana pemain berada dan dapat bertindak sesuai dengan memeriksa negara pemain.
sumber