Bagaimana cara menetapkan area tumbukan kompleks di atas peta ubin?

13

Seperti yang direkomendasikan banyak orang, saya menggunakan editor peta Tiled untuk membuat peta untuk permainan saya dan ini sangat bagus terutama karena kerangka kerja libgdx juga menyediakan API untuk peta dari Tiled.

Saya mengerti saya bisa mendefinisikan ubin yang bisa di collidable atau tidak di editor peta sehingga saya bisa menangani setiap collision dalam kode saya. Tetapi saya saat ini dalam situasi yang saya perlu untuk membagi ubin menjadi daerah yang collidable dan non-collidable. Secara manual, saya pikir saya bisa mendefinisikan titik dan garis batas dari dua area dan secara terprogram menghadapinya. Tapi itu pekerjaan yang menghabiskan banyak waktu.

Jadi saya sering mencari di Google dan menemukan editor fisika-tubuh ini. Ini sepertinya alat yang hebat untuk mengotomatisasi proses yang saya sebutkan di atas. Sistem, bagaimanapun, bekerja dengan masing-masing gambar yang dibongkar dan saya tidak yakin itu akan bekerja bahkan jika saya membongkar gambar untuk operasinya.

Saya ingin tahu apakah ada cara yang lebih baik untuk melakukan seluruh proses pendefinisian area tabrakan ini. Setiap saran akan sangat dihargai.

Tae-Sung Shin
sumber

Jawaban:

22

Seperti biasa saya hanya akan melemparkan beberapa ide ke meja. Tentunya ada beberapa cara Anda dapat mendekati masalah ini. Saya akan menggambarkan tiga yang berhasil saya ingat, dan terserah Anda untuk memutuskan pendekatan mana (yang ada) yang baik untuk proyek Anda.

Ide 1: Pola berulang di ubin Anda

Apakah sistem Anda harus cukup fleksibel untuk mendukung area tabrakan yang mungkin, atau dapatkah Anda memecahnya menjadi seperangkat bentuk ubin terbatas yang dapat Anda buat, dan memperlakukannya sebagai kasing khusus? Berikut adalah sepasang sumber daya untuk membaca ide ini:

Ide 2: Abaikan tilemap

Ya, abaikan tilemap secara lengkap, dan simpan representasi poligonal yang berbeda dari area tumbukan Anda. Lalu overlay geometri ini di atas peta berbasis ubin Anda, dan tangani tabrakan dengannya. Jika Anda tidak memerlukan fisika apa pun, periksa sumber daya berikut:

Kalau tidak, saya pikir Anda mungkin bisa menggunakan alat yang Anda tautkan.

Ide 3: Deteksi tabrakan piksel sempurna

Gunakan tabrakan pixel sempurna dan gunakan mask terpisah atau hanya saluran alpha di ubin Anda untuk menyandikan daerah tabrakan variabel Anda. Untuk inspirasi, periksa panduan berikut:

David Gouveia
sumber