0

そこで、ポリゴンと円をサポートする 2D 物理エンジンに取り組んできました。円と円を除くすべての衝突の組み合わせに分離軸の定理を利用しました。エンジンの基本的な形式は次のとおりです。

*注: 実際のコードではありません

すべての体を進めます。

for every body a
{
   Vector2 sum = Vector2.Zero;
   for every body b where b != a
   {
     sum += a.collides(b).MinimumTranslationVector;
   }
   a.Position += sum;
   a.velocity += sum;
}

ここに私が抱えている問題のビデオがあります: http://www.youtube.com/watch?v=kSZeuP4AiQ0&feature=youtu.be

エラーは、最初の近くで見られるスプリング効果です。私は問題を考えようとして頭を悩ませてきましたが、何も思いつきませんでした。誰が問題が何であるか教えてもらえますか?

4

1 に答える 1

0

この疑似コードを正しく読んでいれば、2 つの物体が衝突するたびに、それぞれの物体の位置と速度が変化します。しかし、落下しているボックスが静止しているボックスにぶつかったとき、静止しているボックスが静止したままになるようにする必要があります。

  1. 基本的な衝突物理学を再考する必要があると思います。実際の衝突はそのようには機能しません。
  2. タイムステップを小さくすることを検討してください。結局のところ、実際の物体弾力性がありますが、「硬い」物体は振動が速すぎて見えません。ゴム状のブロックの積み重ねは、スローモーションで固い物体を積み重ねたように見えるので、速度を上げるとより硬く見えます。大規模な動きはすでに正しいです。
  3. オブジェクトを侵入できないようにしたい場合は、そのために特別なルールを実装する必要があります。壁が貫通できないかどうかはわかりませんが、それは始めるのに適した場所です.
于 2012-03-25T14:43:33.207 に答える