2011-10-19 17 views
0

私はbox2dでアンドロイドゲームを開発しており、物理を進めるために固定タイムステップシステムを使用しています。位置補間が正しく機能しない

しかし、私はこのシステムを使用するので、box2dの位置を補間する必要があります。私はthis article を読んで、記事のものと非常によく似た補間方法を実装しました。

この方法はコンピュータ上でうまく動作するように見えますが、私の電話ではオブジェクトの位置が非常に不安定です。もちろん、PCと電話の間に大きなフレームレートの違いがありますが、私はこのアルゴリズムが気にしないはずだと思います。私のゲームはこのように動作している理由

void PhysicsSystem::smoothStates_() 
{ 
    const float oneMinusRatio = 1.f - fixedTimestepAccumulatorRatio_; 

    for (b2Body * b = world_->GetBodyList(); b != NULL; b = b->GetNext()) 
    { 
     if (b->GetType() == b2_staticBody) 
     { 
      continue; 
     } 

     PhysicsComponent & c = PhysicsComponent::b2BodyToPhysicsComponent (* b); 
     c.smoothedPosition_ = 
      fixedTimestepAccumulatorRatio_ * b->GetPosition() + 
      oneMinusRatio * c.previousPosition_; 
     c.smoothedAngle_ = 
      fixedTimestepAccumulatorRatio_ * b->GetAngle() + 
      oneMinusRatio * c.previousAngle_; 
    } 
} 

誰もが知っている:あなたは記事を見ているような気がしない場合はここで

は、単にコードのでしょうか?それ自体との

ヘルプ

答えて

0

のおかげでこのコードは、記事と比較して、すべての問題を持っているように見えていません。 https://gamedev.stackexchange.com/に投稿し、おすすめがあるかどうか確認してください。

あるいは、hereは、半固定の時間ステップと、デカップリング物理とフレームレートの問題について非常によく書かれた記事です。 Box2Dのためのものではありませんが、それを読み取って物理学の問題点を特定するのに役立ちます。

+0

ありがとう、私はすでにその記事を読んでいますが、私の実装ではそこに表現されているのと同じシステムを使用しています。私はこれをgamedev.stackexchangeでも投稿します。 – Jason

関連する問題