Saya mencoba membuat ledakan bom di Farseer. Saya membuat lingkaran untuk bom. Namun, jika bom meledak, benda (tubuh) yang ada di sekitarnya harus terbang menjauh karena didorong kembali oleh kekuatan ledakan yang sangat besar. Saya tidak yakin bagaimana cara menciptakan kekuatan itu - bagaimana saya bisa melakukannya?
xna
c#
farseer-physics-engine
Homer Simpson
sumber
sumber
Jawaban:
Saya akan merekomendasikan memeriksa halaman iforce2d ledakan . Ia melakukan pekerjaan yang luar biasa dalam berbagai cara menangani ledakan dengan pengorbanan kinerja vs akurasi. Ini membahas 3 metode yang akan saya rangkum di sini. Jadi ini adalah saya meringkas informasi yang saya temukan saat meneliti dan tidak ada yang merupakan karya saya sendiri.
Anda juga ingin menerapkan impuls di sini bukan kekuatan. Untuk memahami mengapa membaca ini .
Metode Kedekatan
Ini adalah metode yang sama yang dilakukan Byte56 dalam jawabannya. Konsepnya sederhana. Memiliki titik ledakan dan menerapkan dorongan pada arah yang berlawanan dari titik yang akan mempengaruhi semua benda dengan kekuatan berdasarkan jarak mereka.
Pro:
Cons:
Metode Raycast
Yang ini cukup sederhana, keluarkan sinar dari asal ledakan Anda dan berikan impuls ketika mereka bertabrakan dengan benda dengan dorongan yang ditentukan oleh jarak.
Pro:
Cons:
Metode Partikel
Favorit pribadi saya. Mirip dengan metode RaySasting tetapi bukannya sinar Anda memanfaatkan mesin fisika dan memuntahkan pelet kecil yang berinteraksi dengan adegan Anda.
Pro:
Cons:
sumber
normalize(object - center)
.(object - center).length
Sedangkan untuk menghitung besarnya Anda bisa mulai dengan falloff linear sederhana, kemudian pindah ke rumus lain jika Anda tidak menyukai hasilnya.
sumber