Cara mendeteksi tabrakan antara sprite dan bentuk yang dibuat pengguna.
Sebagai contoh. Ada beberapa objek di layar. Pengguna mengambil jari mereka dan menggambar bentuk lingkaran di sekitar objek (Aturan pemilihan adalah melukis lingkaran di sekitar sprite, tetapi bentuk lukisan mungkin beragam). Saya perlu mendeteksi objek mana yang dipilih, seperti:
collision-detection
Huwell
sumber
sumber
Jawaban:
Jika bentuknya digambar terutama dengan segmen garis dari pengguna (atau kurva Bezier dengan titik kontrol), Anda dapat menerapkan algoritma yang cukup banyak digunakan yang dikenal sebagai Separating-Axis-Theorem . Sederhananya: jika ada sumbu (unit-vektor yang mewakili arah) di mana bentuk tidak tumpang tindih (nilai yang diproyeksikan tidak menghasilkan perbedaan positif), objek tidak tumpang tindih. Saya telah menggunakan ini di masa lalu dan itu berfungsi seperti pesona.
sumber
Jika bentuk digambar tangan seperti dalam Fisika Crayon , Anda dapat memegang larik garis lurus dan memeriksa tabrakan dengan masing-masing. Meskipun garis lurus Anda dapat menggunakan kurva Bezier atau semacamnya.
sumber
Pendekatan bergantung pada struktur data apa yang Anda pilih, apakah itu bitmap atau vektor.
Pendekatan pertama dapat menangani bentuk kompleks yang arbitrer, mudah diimplementasikan tetapi menggunakan lebih banyak memori. Sebenarnya Anda dapat mengurangi overhead memori dengan menggunakan kompresi dan mempercepatnya dengan menggunakan struktur data hierachical (octrees) ...
Pendekatan kedua, tidak begitu sederhana untuk diimplementasikan tetapi menggunakan lebih banyak kekuatan pemrosesan.
Dalam setiap kasus ukurlah jika itu penting. Saya akan mencoba melakukan yang pertama karena lebih mudah diimplementasikan. Semoga berhasil. :)
sumber