0
我正在開發一個帶有box2d的android遊戲,並使用固定的時間步長系統來推進物理。位置插值不正常
但是,當我使用這個系統時,它需要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