Fisika Ubin menggunakan Farseer

9

Saya mengalami masalah dengan Farseer Physics Engine, di mana dalam lingkungan ubin, objek saya kadang-kadang akan berinteraksi dengan sudut-sudut benda lain, bahkan jika mereka sejajar sempurna.

Fisika Ubin menggunakan Farseer

Saya telah membaca tentang orang-orang yang menyarankan Anda menghitung dan membuat satu objek yang lebih besar, menggunakan Marching Squares atau yang serupa. Namun ini bukan pilihan, karena saya ingin setiap ubin memiliki kualitas fisik yang berbeda, seperti gesekan dan restitusi yang berbeda.

Pertanyaan saya adalah, apa sebenarnya penyebabnya, apakah ini masalah presisi mengambang atau sesuatu yang lain? Dan adakah cara untuk memperbaikinya, tanpa merusak seluruh mesin fisika?

William Mariager
sumber
Saya ingin tahu apakah Anda bisa memperluas kotak tabrakan dengan satu piksel, sehingga tumpang tindih sedikit. Mungkin melihat permukaan sebagai lebih terhubung mungkin.
Doug.McFarlane
@ Doug: Saya baru saja mengujinya, dan tidak ada bedanya.
William Mariager
Apakah ubin lantai badan statis?
bummzack
@bummzack: Ya, benar.
William Mariager
Saya mengalami masalah yang sama persis. Saya mendapatkan efek "memantul" ketika objek bergerak saya adalah persegi panjang atau lingkaran. Saya juga tidak dapat mengubah beberapa kotak menjadi satu persegi panjang besar karena saya ingin pemain memiliki kemampuan untuk "menghapus" ubin individu dalam situasi tertentu.

Jawaban:

5

Farseer menggunakan pemecah iteratif, jadi ketika roda Anda mulai bertabrakan dengan persegi panjang lain dengan kecepatan tinggi, dari waktu ke waktu Anda akan melihat tonjolan karena itu adalah "penyelarasan sempurna" bagi kami, bukan dengan simulasi fisika, dengan iterasi hal-hal seperti ini akan jangan pernah menjadi "pixel-perfect".

Anda harus mengubah segi empat menjadi bentuk Edge / Loop dan kemudian memodelkan kualitas fisik yang berbeda dengan peretasan seperti membuat batas ubin buatan dan kemudian mengubah properti ketika karakter memasuki kotak lompatan, tetapi tidak semua kualitas fisik dapat ditiru dengan cara itu.

Cepat atau lambat Anda akan berakhir menulis fisika berbasis ubin Anda sendiri, bukan Farseer. Jika gim Anda tidak memiliki banyak teka-teki fisika yang rumit, akan lebih mudah untuk meninggalkan Farseer sepenuhnya dan melempar fisika berbasis ubin Anda sendiri.

Cukup
sumber
Saya sebenarnya sudah mulai mengkode mesin fisika saya sendiri, khususnya untuk mesin ubin ini, karena sepertinya tidak ada solusi yang elegan.
William Mariager
Saya memutuskan untuk menandai ini jawabannya, karena sepertinya tidak ada solusi sederhana, dan Anda akan lebih baik mengkode solusi Anda sendiri. Atau terima bahwa Anda tidak dapat memiliki fisika yang berbeda dan menggunakan Marching Squares untuk membuat benda yang lebih besar.
William Mariager
0

Anda dapat mengoptimalkan bentuk tabrakan, adegan ini dapat dilakukan hanya dengan empat persegi panjang.

Anda dapat bergabung dengan kotak korelatif untuk menjadikannya lebih besar.

video ini menunjukkannya http://www.youtube.com/watch?v=eyhGckHgkkE

ketika menambahkan kotak, Anda dapat melihat persegi panjang biru muda dengan bentuk yang dioptimalkan.

Blau
sumber
1
Seperti yang saya katakan pada paragraf ketiga, mengubah sekelompok objek menjadi objek yang lebih besar bukanlah suatu pilihan, karena saya akan kehilangan properti individu.
William Mariager
Anda dapat mengelompokkannya berdasarkan sifat fisiknya juga. Saya pikir itu tidak biasa untuk memiliki banyak blok fisik yang berbeda bersama-sama.
Blau
Mengelompokkan mereka berdasarkan kualitas fisik akan memberi saya masalah yang sama jika medannya banyak berubah pada peregangan. Ini mungkin tidak biasa, tetapi tetap saja itulah yang saya butuhkan.
William Mariager
0

Hmm ... Saya menduga itu ada hubungannya dengan lingkaran Anda dan bukan ubin di bawahnya. Cobalah membuat tanah menggunakan lambung tunggal dan lihat apakah Anda mendapatkan hasil yang sama. Jika tidak, itu ubin seperti yang Anda curigai. Jika demikian, lingkaran Anda tidak bulat seperti yang Anda kira.

John McDonald
sumber
Saya mengujinya. Menggunakan satu kotak besar tidak ada masalah.
William Mariager
k, Ubin adalah masalah saat itu
John McDonald