Tôi đang cố gắng tạo ra một trò chơi trong đó các vật thể có thể được kéo, nhưng tôi gặp rắc rối với vật lý. Với những cơ thể cứng nhắc có khối lượng tương tự nhau, đôi khi chúng đẩy nhau khi bị kéo và gây ra những chuyển động không mong muốn. Đây là một bản demo .
Tôi muốn làm điều này chỉ bằng vật lý tích hợp của Unity 3D .
Trong bản demo, bạn có thể sử dụng chuột để nhấp và kéo các đối tượng. Các xi lanh đều có các máy va chạm hộp và khối lượng 10000. Chúng cũng có các ràng buộc khác nhau tùy thuộc vào hướng của chúng (không ai có thể xoay và tất cả đều bị ràng buộc theo x hoặc y). Hình cầu có khối lượng bằng 1, một máy va chạm hình cầu và ràng buộc az.
Các hình cầu và hình trụ tương tác tốt. Tuy nhiên, kéo các hình trụ qua nhau gây ra giao lộ. Tôi không muốn cái này!
Các hình trụ có nội suy được đặt thành 'Nội suy' và phát hiện va chạm được đặt thành 'Liên tục'. Tôi đã ném tập lệnh 'DontGoThroughThings' lên tất cả các trụ, nhưng dường như nó không làm gì cả. Đối với việc thiết lập vận tốc của các vật cứng, tôi đã sử dụng cả hai dòng sau với kết quả cơ bản giống nhau:
rb.AddForce(speed * diff * Time.deltaTime - rb.velocity, ForceMode.VelocityChange);
//rb.velocity = speed * diff * Time.deltaTime;
Không viết mã phát hiện va chạm của riêng tôi, tôi hết ý tưởng. Có một thiết lập đơn giản hoặc một cái gì đó tôi đã bỏ lỡ?
Với bối cảnh được giải thích, đây là một câu hỏi chính xác hơn: "Làm thế nào tôi có thể khiến các hình trụ trong bản demo của mình không di chuyển qua nhau?"