Bagaimana mesin menghindari "Phase Lock" (beberapa objek di lokasi yang sama) di Mesin Fisika?


8

Izinkan saya menjelaskan Fase Kunci terlebih dahulu: Ketika dua benda yang bukan nol massa menempati ruang yang sama tetapi memiliki energi nol (tanpa kecepatan).

Apakah mereka menabrak selamanya dengan vektor resolusi kecepatan nol atau mereka hanya terkunci bersama sampai kekuatan luar berinteraksi?

Di mesin diseduh rumah saya, saya menyadari bahwa jika saya memuat karakter ke pohon dan memindahkan mereka, mereka akan menandakan tabrakan dan melompat kembali ke tempat asli mereka. Saya kira saya bisa memperbaikinya dengan menerapkan impuls jika terjadi tabrakan, bukan hanya melompat kembali ke tempat terakhir saya berada (implementasi saya agak menyebalkan).

Tetapi sementara saya membuat mesin saya lebih kuat, saya hanya ingin tahu bagaimana kebanyakan mesin fisika lainnya menangani kasus ini. Apakah objek yang dimulai di tempat yang sama tanpa kecepatan gerakan hanya saling menembak satu sama lain secara acak? Atau apakah mereka duduk di sana sampai sesuatu terjadi? Opsi mana yang umumnya merupakan pendekatan terbaik?


3
Saya tidak dapat berbicara dengan implementasi yang sebenarnya (karena itu merupakan komentar alih-alih jawaban), tetapi dalam pengalaman saya, mesin fisika biasanya secara perlahan akan mendorong dua objek keluar satu sama lain. Sebagai contoh, jika dua kotak menelurkan saling tumpang tindih, mereka perlahan-lahan akan saling menjauh sampai benar-benar terpisah. Bagaimana tepatnya ini akan dilaksanakan tergantung pada pertimbangan.
kevintodisco

Ya, saya menyadari bahwa ini adalah pertanyaan yang aneh, karena tidak banyak bertanya tentang bagaimana mengimplementasikannya, tetapi lebih dari itu bagaimana biasanya ditangani. Terima kasih atas masukan Anda!
C0M37

Jawaban:


4

Saya kira jenis ini akhirnya menjadi non-jawaban ...

Saya pikir kadang-kadang tergantung pada implementasi dan pendekatan dasar yang digunakan untuk deteksi dan resolusi tabrakan (yang seperti 80% dari mesin fisika tubuh kaku, saya kira). Itu lucu karena saya baru saja menemukan masalah ini di mesin fisika saya sendiri dan melemparkan sebuah benda ke ruang angkasa NaN.

Saya memiliki objek yang muncul di tempat yang sama persis dengan objek lain dan keduanya memiliki bentuk yang sama. Dalam kasus khusus ini generator kontak membuat nilai yang sangat buruk. Saya memperbaikinya dengan memilih nilai acak untuk kontak (mendorong objek yang lebih kecil / lebih ringan lurus ke atas, pada dasarnya). Ini kasus yang cantik dan kering.

Jika sebuah kursi muncul di dalam sebuah meja maka itu akan tergantung pada kontak apa yang dihasilkan apakah mereka terbang terpisah atau macet. Dalam kasus saya, saya tidak menggunakan sistem berbasis kendala (setidaknya belum) sehingga objek tersebut cenderung meledak terpisah sehingga berosilasi dan tertidur. Dalam sistem penetrasi + impuls seperti yang saya gunakan, cukup mudah untuk melihat semua yang jelek dan bagaimana hasilnya. Saya tidak tahu bagaimana sistem berbasis kendala menyelesaikan masalah ini atau jika bahkan mendeteksi itu ... kendala tampaknya tidak terjangkau bagi saya tanpa intervensi dan saya tidak tahu apakah ada cara standar untuk jenis mesin tersebut.

Yang lain pasti akan memiliki hal-hal yang lebih pintar untuk dikatakan tetapi ini terlalu lama untuk dikomentari.


Saya menghargai jawaban Anda. Saya merasa ingin mengajukan pertanyaan ini sebagai semacam rakit kehidupan bagi orang lain untuk ditemukan seandainya mereka pernah terjebak dalam situasi yang sama.
C0M37

Lol @PSpeed ​​di sini juga ^^
SHiRKiT

0

Ini ditangani dengan dua cara:

  1. Perbaiki tumpang tindih antara objek yang dapat dikoleksi
  2. menghasilkan kekuatan "normal" yang akan mendorong benda-benda terpisah, jika mereka bertabrakan.

Ini hanya berfungsi, jika Anda membedakan kecepatan / waktu. Ini tidak akan berfungsi dalam game berbasis ubin, dan akan menghasilkan artefak yang terlihat, seperti satu objek baik menerobos objek, atau secara jelas didorong keluar dari objek lain.

Dalam kasus game berbasis ubin, Anda dapat mengambil pendekatan prediktif, dengan memeriksa di mana objek akan berada jika bergerak. Jika gerakan akan menyebabkan penguncian fase, maka larang pergerakan.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.