libgdx box2d插值不能很好地工作

时间:2013-04-24 18:07:25

标签: android box2d libgdx interpolation

我正在使用libgdx和box2d开发Android游戏。 我的问题是box2d中的身体插值效果不好......身体有点萎靡不振。没有插值,身体“不那么la”。 这是我的代码的一部分:

public void gameRunning()
{
    mAccumulator += Gdx.graphics.getDeltaTime();

    if(mAccumulator > 1f)
    {
        mAccumulator = 1f;
    }

    while(mAccumulator >= BOX_STEP)
    {
        resetSmooth();
        mWorld.step(BOX_STEP, BOX_VELOCITY_ITERATIONS, BOX_POSITION_ITERATIONS);
        mAccumulator -= BOX_STEP;
    }

    mWorld.clearForces();
    smooth();
}

public void smooth()
{
    float ratio = mAccumulator/BOX_STEP;
    float oneMinusRatio = 1.f-ratio;

    mSmoothedX = ratio*mBowl.getPosition().x+oneMinusRatio*mPreviousX;
    mSmoothedY = ratio*mBowl.getPosition().y+oneMinusRatio*mPreviousY;

    mBowl.setTransform(mSmoothedX, mSmoothedY, 0f);
}

public void resetSmooth()
{
    mSmoothedX = mPreviousX; 
    mSmoothedY = mPreviousY; 

    mPreviousX = mBowl.getPosition().x;
    mPreviousY = mBowl.getPosition().y;
}

问题出在哪里? 抱歉我的英语不好,并提前感谢... :)

1 个答案:

答案 0 :(得分:1)

你不应该像这样移动box2d的身体,而应用力/冲动。否则它们在物理模拟中的表现不正确。

另外,你的Interpolation实现对我来说似乎很奇怪,你为什么不使用Interpolation class

示例:

    mSmoothedX = Interpolation.linear.apply(startx, endx, <time>);