私は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_;
}
}
誰もが知っている:あなたは記事を見ているような気がしない場合はここで
は、単にコードのでしょうか?それ自体との
ヘルプ
ありがとう、私はすでにその記事を読んでいますが、私の実装ではそこに表現されているのと同じシステムを使用しています。私はこれをgamedev.stackexchangeでも投稿します。 – Jason