Bagaimana cara menentukan apakah karakter telah jatuh ke celah dalam pelari / pelompat tak terbatas?


12

Saya sedang membangun pelari tak terbatas 2D. Dalam permainan, karakter melompat dari pilar ke pilar dan pilar dihasilkan secara acak. Saya punya ini berfungsi. Tetapi bagaimana cara menentukan apakah karakter gagal melompat ke pilar dan telah jatuh ke celah antara pilar? Pilar berbentuk segi empat biasa.


OT: Saya pikir pertanyaan ini diposting di rpg.SE dan saya pikir "Jenis eksploit aturan apa yang telah ditemukan sekarang? Infinite running how?"
o0 '.

Jawaban:


20

Tambahkan wilayah persegi panjang di bagian bawah level, lebih rendah dari ketinggian minimum yang diijinkan dari sebuah platform. Jika pemain telah memotong wilayah ini, mereka terjatuh dari platform.


1
Dan membuat persegi panjang ini anak kamera sehingga bergerak dengan kamera dan selalu ada? Itu sangat mudah. Terima kasih.
SanSolo

Bahkan jika pemain seharusnya tidak dapat melewati level, saya pikir ini adalah perlindungan yang baik untuk dimiliki jika dia berhasil melakukannya.
mucaho

5
Jika Anda benar-benar memeriksa persimpangan, pastikan bahwa karakter Anda tidak dapat jatuh begitu cepat untuk menembus permukaan (yaitu, satu dari karakter sepenuhnya di atas, dan bingkai berikutnya seluruhnya di bawah).
wchargin

2
Ya, kotak harus memanjang sejauh yang diperlukan untuk menghindari ini. Juga hanya memeriksa ketinggian akan berhasil, tetapi ini memberi Anda fleksibilitas mengubah ukuran "membunuh wilayah" tergantung pada level.
mklingen

6
Untuk menghindari "kliping" melalui persegi panjang, mengapa tidak sederhana if (playerPos.x < minHeight)?
Cole Johnson

24

Jika permainan Anda hanya bergulir secara horizontal, Anda dapat memeriksa apakah posisi vertikal karakter berada di bawah tepi bawah panggung.

Jika permainan Anda juga bergulir secara vertikal (mungkin ke atas), Anda dapat memeriksa apakah pemain telah jatuh di bawah tepi bawah tampilan (yaitu area panggung yang ada di layar, atau dalam fokus kamera).

Secara umum, kondisi kematian adalah jika karakter gagal untuk tetap "di kamera". Dengan mengontrol pergerakan kamera Anda, Anda akan dapat menyetel gameplay Anda. Misalnya, jika dalam tahap pengguliran vertikal Anda hanya membiarkan kamera "karet gelang" sedikit ke bawah, sementara memungkinkan gerakan ke atas penuh, Anda akan menghukum jatuh dalam, offscreen.


Ya, itu juga cara yang mudah. Aku hanya perlu mencari tahu posisi terendah. Ya, karakternya bisa seperti itu.
SanSolo

1
Benar! dalam kasus penggulung horisontal Anda cukup memeriksa ukuran vertikal panggung di editor peta Anda. Dalam kasus penggulung vertikal, Anda dapat memastikan kamera hanya bergerak ke atas. Dengan begitu, jika karakternya jatuh, ia akan berakhir di bawah tampilan kamera. Anda kemudian dapat dengan mudah memeriksa apakah posisi vertikal karakter jatuh di bawah batas bawah tampilan.
Jelle van Campen

@JellevanCampen: Anda tidak harus membatasi kamera untuk gerakan ke atas. Anda dapat membunuh karakter yang gagal tetap "di kamera", atau memiliki kamera yang mengikutinya.
Mooing Duck

Saya tidak suka jawaban ini karena ini mengikat kamera langsung ke batas level. jawaban mklingen bekerja bahkan jika batas levelnya lebih dari satu tinggi layar. Kamera dapat bergerak ke atas dan ke bawah untuk fokus pada karakter, tetapi tidak ada risiko bahwa karakter akan jatuh lebih cepat dari kamera, tetap di level, tetapi masih bertabrakan dengan kotak batas yang melekat langsung ke kamera.
Kevin

2
@Kevin: Saya setuju untuk gim umum, tetapi tidak untuk gulir tak terbatas yang dihasilkan secara prosedural. Misalnya, dalam penggulung vertikal, Anda harus terus memunculkan kotak baru dan mencabut kotak di luar layar, atau Anda harus terus memperbarui kotak saat kamera bergerak. Karena kondisi kematian secara langsung terkait dengan "gagal untuk tetap di kamera", masuk akal untuk mengikat kondisi tersebut ke kamera. Ini juga lebih baik untuk melakukan pemeriksaan batas kamera, daripada menelurkan objek baru dan melakukan pemeriksaan tabrakan.
Jelle van Campen

2

Atau untuk memeriksa koordinat vertikal , Anda bisa memeriksa kecepatan vertikal. Jika karakter jatuh ke bawah lebih cepat dari beberapa ambang batas, menyimpulkan mereka sudah mati (bahkan jika ada yang beberapa platform yang cukup rendah masih mencapai, dampaknya akan fatal).

Tentu saja, ini hanya berfungsi jika gim Anda menerapkan fisika jatuh bebas dasar dengan benar, yaitu kecepatan turun sebenarnya meningkat selama musim gugur, seperti yang terjadi pada kenyataannya (hingga kecepatan terminal).


1

Jika Anda memiliki tinggi pilar, Anda dapat menemukan yang terendah ada, dan membandingkannya dengan posisi pemain vertikal. Jika dia di bawah pilar terendah, tidak ada kemungkinan dia bisa kembali. Anda dapat membatasi pemeriksaan ini hanya untuk pilar di belakang dan di depan pemain.

Contoh: Kami memiliki 3 pilar, dengan ketinggian [10, 20, 40]. Pemain yang melompat ada di pilar dengan ketinggian 40, dia melompat ke depan ke 20. Dia merasakan jarak antara 40 dan 20, dia sekarang di ketinggian 15. Itu berarti dia merasa. Untuk pemeriksaan yang kurang ketat, tunggu sampai dia di bawah 10.


Semua pilar berukuran sama. Ini celah horizontal antara dua pilar yang berbeda-beda :)
SanSolo

0

Catat berapa lama karakter telah jatuh. (yaitu berapa lama mereka telah bergerak "turun"). Begitu mereka telah jatuh lebih dari satu layar penuh waktu, mereka secara definisi telah jatuh dari panggung, ya?

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.