Wall Jump for 2D Platformer

14

Saya telah mencari cara untuk mengimplementasikan wall-jump di game xna saya, tetapi saya tidak dapat menemukan informasi tentang hal itu, dapatkah seseorang membantu seseorang?

dbomb101
sumber

Jawaban:

21

Ketika seorang pemain bertabrakan dengan dinding saat melompat (atau, jika Anda suka, jatuh), nyalakan bendera selama 100 milidetik atau lebih yang menyebabkan upaya melompat untuk berhasil memulai lompatan (mengabaikan semua pemeriksaan kontak permukaan) dengan cukup banyak kecepatan pada sumbu X ke arah yang jauh dari dinding. Ingatlah untuk mematikan bendera lebih awal jika lompatan sebenarnya dimulai.

kekacauan
sumber
3
Saya pikir Anda perlu mengubah kalimat pertama: "Ketika seorang pemain bertabrakan dengan dinding (saat mereka melompat) ..." jika tidak, pemain bisa melompat dari dinding yang tidak bergerak di tanah di sebelah dinding, yang tidak akan diharapkan.
CiscoIPPhone
@CIPIPhone: Ya, terima kasih. Itu akan menghasilkan perubahan perilaku aneh antara 100 ms setelah tabrakan dan kemudian.
chaos
2

Jujur saya baru saja melakukan pemeriksaan titik. Begitu:

if (falling AND left_key_pressed AND !point_free(x-1,y))
    doWallJump

Anda mungkin ingin mengubah y untuk mengatakan y + sprite_width / 2 (atau - tergantung pada sistem koordinat Anda) sehingga ia memeriksa ke kiri tengah sprite Anda, bukan bagian atas (atau bawah). Ini adalah bagaimana N mengimplementasikan pemeriksaan dinding untuk melompat dinding (paragraf terakhir) .

Setelah itu Anda harus memutuskan seberapa ketat Anda ingin dinding Anda melompat. Jika kecepatan vertikal lompatan Anda melampaui horizontal sebelum pemain dapat mencapai dinding yang sama lagi, Anda tidak akan dapat melompat ke dinding yang sama dan secara bertahap akan jatuh kembali ke bawah (seperti dalam game Mario dengan lompat dinding ). Jika Anda membiarkan horisontal menjadi cukup lemah bagi pemain untuk kembali ke dinding, ia akan dapat naik ke atas dinding (seperti pada Meat Boy).

Pendekatan lain yang tidak disebutkan adalah Super Metroid. Dalam gim itu saat Anda melawan dinding, jika Anda bergerak dari dinding itu, sebuah animasi "pindah dinding" yang sangat singkat akan dimainkan. Jika Anda melompat selama animasi itu, Anda akan melakukan lompatan dinding. (Super Metroid juga memungkinkan pemain untuk memanjat dinding menggunakan lompatan dinding, tetapi membutuhkan sedikit keterampilan (pada kenyataannya segala sesuatu tentang melompat dinding di Super Metroid membutuhkan sedikit keterampilan ...).)

Jeff
sumber