Buat pemain berlari ke tangga dengan lancar

11

Saya memiliki permainan Platform 2D, di mana pemain Selalu berlari ke kanan, tetapi medannya tidak Selalu horizontal. Contoh:

Sebuah contoh

Saya menerapkan sistem tabrakan kotak-terikat yang hanya memeriksa persimpangan dengan kotak pemain dan blok lainnya, untuk menghentikan pemain dari berlari jika Anda menemukan blok besar, sehingga Anda harus melompat, tetapi ketika saya meletakkan tangga, saya ingin dia berjalan lancar seperti dia berada di tanah horisontal. Dengan sistem tabrakan Anda harus melompat tangga untuk melewatinya!

Saya berpikir tentang membuat garis di antara ujung tangga, dan memaksakan gerakan pemain pada garis itu ... Bagaimana menurut Anda? Apakah ada yang lebih pintar untuk dilakukan?

Seperti di sini

Francesco Bonizzi
sumber

Jawaban:

11

Jika Anda dapat memutar kotak pembatas, saya akan meletakkan kotak yang diputar 45 derajat di kaki pemain dan menggabungkannya dengan satu kotak yang tidak diputar untuk mewakili bagian tubuh lainnya. Itu bisa membuat pemain secara otomatis menggeser sesuatu yang cukup kecil.

Padahal, itu mungkin akan menyebabkan beberapa guntingan dengan model pemain dan tangga.

Gagasan lain adalah dengan meletakkan satu kotak pembatas dari kepala karakter untuk mengalah dengan lebar lebih tinggi dari kotak karakter.

Ketika pemain bertabrakan dengan sesuatu yang kotak 'A' tidak, Anda dapat memindahkan pemain di atas apa yang bertabrakan dengan

_________________
|    |     |    |
|    |     |    |
|  A | pla | A  |
|____| yer |____|
     |     | _________________________ <- step 
     |     | |      
--------------------------------------------- <- ground
Kim
sumber
12

Ada tiga pendekatan umum untuk menangani tangga dalam video game:

Pendekatan "Mario" adalah Anda harus melompat untuk naik tangga.

Pendekatan "Castlevania" adalah bergerak naik / turun adalah jenis gerakan yang berbeda; Anda harus menekan 'atas' pada controller, dan animasi "memanjat tangga" khusus dimainkan untuk melintasi tangga. Varian dari ini adalah pendekatan "Resident Evil", di mana naik atau turun tangga diperlakukan sebagai cutscene lengkap yang diputar ketika pemain menekan tombol interaksi; tidak ada anak tangga interaktif yang diizinkan.

Pendekatan "Almost Everyone Else" adalah yang Anda sebutkan: perlakukan tangga seolah-olah itu benar-benar jalan. Tergantung pada jenis gimnya, Anda mungkin ingin menempatkan tanjakan pada ketinggian yang berbeda relatif terhadap tangga. Biasanya dalam gim 2D, trik "tangga sebenarnya merupakan tanjakan" kurang terlihat oleh pemain jika tanjakan sejajar dengan sudut bawah setiap langkah tangga, sedangkan dalam gim 3D biasanya kurang terlihat jika tanjakan sejajar dengan sudut atas setiap langkah. (seperti dalam gim 2D, lebih mudah untuk memperhatikan jika kaki karakter melayang di atas tanah, dan jadi Anda ingin meminimalkannya, sedangkan di gim 3D lebih mudah untuk memperhatikan jika kaki karakter menggigit tanah, sehingga Anda ingin memperkecil itu).

Trevor Powell
sumber
Komentar hebat tentang float / kliping pada berbagai sudut pandang grafis.
Kroltan
Informasi Anda agak salah. Hanya di game mario lama Anda harus melompat untuk naik tangga. Tapi saya kira itu sudah jelas. Tapi resident evil juga punya tangga yang bisa dinaiki secara interaktif!
Tara
4

Sebagian besar metode yang saya temui telah dinyatakan di atas - tetapi masih ada satu lagi yang belum disebutkan. Ketika pemain menghadapi rintangan vertikal yang cukup pendek (katakanlah, 1/3 hight mereka), cukup letakkan mereka di atas. Minecraft dan mesin Sumber misalnya mengambil pendekatan ini dalam situasi seperti itu. Selain itu, metode ini memungkinkan Anda untuk tetap menggunakan AABB murni untuk semua fisika sambil tidak menempatkan pemain melalui rasa sakit karena harus terus-menerus melompat ke atas.

Jwosty
sumber
Alangkah baiknya jika Anda bisa menjelaskan cara mendeteksi hambatan tersebut.
Tara
0

Saat ini saya sedang mengerjakan bagian mesin yang serupa, dan cara saya menangani tangga / lereng adalah dengan menghitung piksel transparan dalam tekstur ramp saya dan mengimbangi objek pemain dengan jumlah yang ditemukan.

Ini serupa dengan gagasan peta ketinggian yang dirinci dalam artikel ini: http://info.sonicretro.org/SPG:Solid_Tiles#Slopes_And_Curves

Saya membayangkan itulah yang benar-benar ingin Anda lakukan, dan Anda dapat memilih untuk memainkan animasi berbeda yang diputar sesuai dengan kenaikan tangga.

Ada juga gambaran umum yang baik tentang konsep lereng yang berbeda dalam artikel ini: http://higherorderfun.com/blog/2012/05/20/the-guide-to-implementing-2d-platformers/

Game PixelCake
sumber