Saya mencoba membuat game di mana objek dapat diseret, tetapi saya mengalami masalah dengan fisika. Dengan tubuh kaku yang memiliki massa serupa, mereka terkadang saling mendorong ketika diseret dan menyebabkan gerakan yang tidak diinginkan. Ini demo .
Saya ingin melakukan ini hanya menggunakan fisika bawaan Unity 3D .
Dalam demo, Anda dapat menggunakan mouse untuk mengklik dan menarik objek. Semua silinder memiliki colliders kotak dan massa 10000. Mereka juga memiliki berbagai kendala tergantung pada orientasinya (tidak ada yang bisa berputar, dan semua dibatasi dalam x atau y). Bola memiliki massa 1, bola lingkup dan kendala az.
Bola dan silinder berinteraksi dengan baik. Namun menyeret silinder satu sama lain menyebabkan persimpangan. Saya tidak mau ini!
Silinder memiliki interpolasi diatur ke 'Interpolasi' dan deteksi tumbukan diatur ke 'Berkelanjutan'. Saya telah melemparkan skrip 'DontGoThroughThings' ke semua silinder, tetapi sepertinya tidak melakukan apa-apa. Sedangkan untuk mengatur kecepatan rigidbodies, saya telah menggunakan kedua baris berikut dengan hasil yang pada dasarnya sama:
rb.AddForce(speed * diff * Time.deltaTime - rb.velocity, ForceMode.VelocityChange);
//rb.velocity = speed * diff * Time.deltaTime;
Tanpa menulis kode deteksi tabrakan saya sendiri, saya kehabisan ide. Apakah ada pengaturan sederhana atau sesuatu yang saya lewatkan?
Dengan dijelaskan konteksnya, inilah pertanyaan yang lebih tepat: "Bagaimana saya bisa mendapatkan silinder di demo saya untuk tidak saling bergerak?"