Deteksi Tabrakan Tali 2D

13

Saya ingin membuat tali yang dapat bertabrakan dengan benda-benda seperti di video youtube berikut:

Tali Fisika Game 2D

Saya berpikir bahwa Anda menerapkan integrasi verlet yang menggunakan poin dan menghubungkan titik-titik ini dengan garis. Saya mencoba mencari tahu jenis deteksi tabrakan yang akan Anda terapkan pada tali untuk mendapatkan efek dalam video.

Saya pikir Anda harus melakukan beberapa cd untuk setiap titik. Saya ingin menggunakan box2D, jadi saya bertanya-tanya apakah setiap titik akan bekerja dengan kaku? Nasihat apa pun akan dihargai.

Joey Green
sumber
1
Jika Anda dengan hati-hati menonton video di tautan Anda, jelas bahwa "tali" yang disimulasikan sebenarnya adalah sebuah rantai, yaitu sejumlah besar segmen tidak fleksibel yang terhubung dalam satu garis, dan bukannya primitif yang terus-menerus fleksibel. Ini paling jelas ketika tali membungkus rintangan bulat kecil; Anda dapat melihat sudut-sudut berputar di sekitarnya. Rantai jauh, jauh lebih mudah untuk disimulasikan daripada tali kontinyu; setiap tautan hanyalah primitif tabrakan dan mereka saling terhubung secara permanen. Untuk perilaku yang lebih meyakinkan, buat setiap tautan menjadi pegas yang kaku dan tidak sepenuhnya tidak fleksibel.
Paul Z

Jawaban:

6

Karena Anda menggunakan Box2D, Anda bisa membuat serangkaian persegi panjang dan menggunakan sambungan Box2D untuk bergabung dengannya. Di sana Anda memiliki tali Anda.

Untuk menghindari tikungan dari tali yang bengkok, saya bisa membayangkan dua pilihan:

  1. Berikan ruas tali Anda pada ujung yang membulat (sehingga tidak akan berbentuk persegi panjang lagi)
  2. Buat tali ini sendiri tidak terlihat dan gunakan hanya untuk fisika. Ambil posisi sendi di setiap frame dan gunakan itu untuk menggambar tali dengan cepat yang akan dilihat pemain .

Peringatan: Saya belum pernah mencoba ini sendiri, tetapi saya gagal melihat bagaimana serangkaian persegi panjang yang bergabung dapat gagal ketika video yang Anda posting menampilkan secara praktis hal yang sama dalam penyamaran.

Sunting: Saya baru saja melihat PaulZ dan saya menyadari hal yang sama. Baca juga komentarnya tentang pertanyaan itu.

doppelgreener
sumber
2

Google cepat melemparkan ini ke sini . Demo, deskripsi, dan kode (dalam Flash) menggunakan Box2D untuk mengimplementasikan tali sederhana. Tali bertabrakan dengan dirinya sendiri dan blok di bagian atas tempat kejadian.

Roger Perkins
sumber
0

Inilah yang akan saya lakukan, buat setiap titik pada garis menjadi lingkaran, buat cukup banyak poin yang tumpang tindih. Tether setiap titik ke tetangga itu, daripada tabrakan standar tether ini harus membuat poin tetap jarak yang tetap dari satu sama lain.

Saya tidak tahu Box2D, tapi saya kira fungsionalitas yang diperlukan ada di sana.

aaaaaaaaaaaa
sumber
0

Awalnya Box2D memiliki demo jembatan tali yang terbuat dari kotak-kotak tipis yang bergabung dengan batasan point-to-point; itu akan menjadi tempat yang baik untuk memulai (saya tidak tahu apakah masih dikirimkan dengan demo itu, tetapi akan mudah untuk menciptakan kembali).

Cukup mudah untuk menerapkan tali sebagai partikel dengan kendala jarak terlepas dari simulator benda tegar (seperti yang Anda sebutkan, menggunakan integrasi Verlet dan skema penyelesaian kendala seperti yang dijelaskan dalam artikel ini: http://www.gamasutra.com/resource_guide/ 20030121 / jacobson_pfv.htm ), tetapi jika Anda ingin tubuh kaku bereaksi terhadap tali Anda (seperti dalam video, dengan kotak menggantung) maka itu menjadi jauh lebih rumit. Saya akan mulai dengan seperangkat alat yang komprehensif seperti Box2D dan bekerja mundur daripada mencoba dan membangun dari partikel.

boat365
sumber
0

Saya ingat permainan Allegro ini: Cupid , dari SpeedHack 2002. Ini berisi implementasi untuk tali yang bertabrakan dengan pemandangan. Lihat kelas PhysParticles dan HeartTrails di file heart_tails.cpp dalam kode sumbernya .

dasbor
sumber