Saya sedang membangun game Plattformer Jump n 'Run Style yang sederhana. Saya tidak menggunakan ubin - sebagai gantinya saya memiliki bentuk geometris untuk entitas level saya (dan pemain juga satu). Saya menyelesaikan kode deteksi tabrakan saya dan semuanya berfungsi dengan baik sejauh ini.
Selanjutnya, saya ingin menerapkan jumping. Hanya memeriksa apakah pemain menekan tombol yang sesuai dan menambahkan beberapa kecepatan ke atas. Bekerja dengan baik. Tapi itu bekerja bahkan jika pemain di udara, yang bukan yang saya inginkan. ;-)
Jadi, saya harus memeriksa apakah pemainnya berdiri pada sesuatu. Ide pertama saya adalah untuk memeriksa apakah ada tabrakan di frame terakhir dan menandai pemain sebagai "mampu melompat", tetapi ini bahkan akan memicu jika pemain menabrak dinding di udara. Karena kemampuan matematika saya tidak begitu baik, saya meminta bantuan - bahkan petunjuk akan melakukan cara mengimplementasikannya.
Terima kasih!
Anda tentu harus menerapkan semacam jenis permukaan. Pikirkan itu, bagaimana Anda mengaturnya jika Anda bisa menaiki tangga jika Anda tidak tahu apakah karakter Anda hanya menabrak dinding atau tangga? Anda bisa menggunakan OOP untuk mengelola hierarki jenis menggunakan warisan, tetapi saya menyarankan Anda untuk menggunakan "kategori" yang diimplementasikan menggunakan jenis yang disebutkan:
Inilah idenya: Penghitungan "Tabrakan" memiliki bendera untuk setiap kategori. Sebagai contoh:
Dengan metode ini, Anda akan dapat menguji apakah pemain juste bertabrakan dengan apa yang harus Anda kelola, sehingga mesin Anda dapat memanggil metode "Collided" dari entitas:
Metode ini menggunakan bendera bitwise dan operator "Atau" bitwise untuk memastikan setiap kelompok memiliki nilai yang berbeda, berdasarkan nilai biner kategori. Metode ini berfungsi dengan baik dan mudah diskalakan sehingga Anda dapat membuat grup tabrakan pabean. Setiap Entitas (Pemain, Musuh, dll.) Di gim Anda memiliki beberapa bit yang disebut "filter", yang digunakan untuk menentukan apa yang dapat bertabrakan dengannya. Kode tumbukan Anda harus memeriksa untuk melihat apakah bit cocok dan bereaksi sesuai, dengan beberapa kode yang mungkin terlihat seperti:
sumber
Jika Anda menganggap kaki karakter Anda sebagai alway di bawah karakter dengan jarak tertentu, dan jika Anda tidak bergerak menjauh dari permukaan maka karakter Anda ada di tanah.
Dalam pseudo-code kasar:
sumber
char
, bahkan dalam pseudo-code.