物理衝突検出の問題は、オブジェクトの速度が速すぎる場合 (この場合は、剛体に力が加えられた結果)、衝突が検出されないことがあります。その理由は、実行しているコードが 1 秒あたり x のステップ数で実行されているため、リジッドボディが 1 つのステップと別のステップの間でコライダーを通過することがあるためです。時速 100 マイルのボールと、幅 1 フィートの壁があるとします。コードは、物理学に従ってコードが実行されるたびに、決められた量のフィートだけボールを動かします。したがって、ボールの動きは仮想化されます。しかし、これは実際の物理的な動きではないため、あるステップから別のステップへとボールが点 a から b に移動する可能性があり、壁がそれらの点の間にあり、結果として衝突が検出されないことがあります。
可能な解決策。
本来あるべきほど正確ではない単純な解決策と、完全に正確になる難しい解決策があります。
最初の解決策は、コインが得られる最大速度に応じてコライダーのサイズを大きくすることです。これにより、フレーム間で衝突が見逃されないように、コライダーが十分に大きくなります。
2番目の難しい解決策は、衝突検出に補助機能を追加することです。これは、ある種のセキュリティチェックです。たとえば、物理的なレイキャストを使用します。レイキャストを前方に設定し、そのオブジェクトが差し迫った衝突であるかどうかを判断できます。そうであれば、オブジェクトがレイキャストによって衝突されなくなったら、衝突検出が失敗したため、Auxiliar でそれを確認して呼び出すことができます。衝突状態。
役に立てば幸いです。私の英語については申し訳ありません。あまり理解していない場合は、コードを手伝うことができますが、プロジェクトからのコードが必要になります。