オブジェクトをドラッグできるゲームを作ろうとしていますが、物理に問題があります。質量が類似しているリジッドボディを使用すると、ドラッグ時に互いに突き抜けて、不要な動きが発生することがあります。こちらがデモです。
Unity 3Dの組み込みの物理演算のみを使用してこれを実行したいと思います。
デモでは、マウスを使用してオブジェクトをクリックしてドラッグできます。円柱はすべてボックスコライダーと質量10000です。また、向きに応じてさまざまな制約があります(どれも回転できず、すべてxまたはyで制約されます)。球体の質量は1、球体コライダー、およびz拘束です。
球と円柱はうまく相互作用します。ただし、円柱を互いにドラッグすると、交差が発生します。これいらない!
円柱の補間は「補間」に設定され、衝突検出は「連続」に設定されています。'DontGoThroughThings'スクリプトをすべてのシリンダーにスローしましたが、何も実行しないようです。リジッドボディの速度の設定に関しては、以下の両方のラインを使用して、基本的に同じ結果が得られました。
rb.AddForce(speed * diff * Time.deltaTime - rb.velocity, ForceMode.VelocityChange);
//rb.velocity = speed * diff * Time.deltaTime;
独自の衝突検出コードを書かなければ、アイデアはありません。簡単な設定や見逃したものはありますか?
コンテキストが説明されたので、より正確な質問を次に示します。「デモのシリンダーが互いに移動しないようにするにはどうすればよいですか?」