您好, 我正在 LibGDX 的帮助下开发一款游戏,并在其中使用 Box2d 。问题是,当我在hdpi或平板电脑上运行游戏时它运行正常但是在 ldpi 和 mdpi 的情况下,box2d机构没有相应的行为。
我认为,在这些手机上渲染需要花费更多的时间。那么,我如何为ldpi和mdpi手机优化我的游戏。我在world.step中传递的值是worldbox.step(Gdx.graphics.getDeltaTime(), 10, 2000);
感谢。
答案 0 :(得分:0)
使用帧率作为时间步长是个坏主意。 Box2D手册说:
可变时间步长会产生可变结果,这使得调试变得困难。所以不要将时间步长与帧速率联系起来(除非你真的,真的必须这样做。)
此外,您对速度和位置迭代使用了太大的值。 Box2D手册说:
Box2D的建议迭代计数为8表示速度,3表示位置。
尝试固定时间步骤并推荐迭代计数如下:
float mAccomulated = 0;
float mTimeStep = 1.0f / 60.0f;
int mVelocityIterations = 8;
int mPositionIterations = 3;
void updatePhysicWorld()
{
float elapsed = Gdx.graphics.getDeltaTime();
// take into account remainder from previous step
elapsed += mAccomulated;
// prevent growing up of 'elapsed' on slow system
if (elapsed > 0.1) elapsed = 0.1;
float acc = 0;
// use all awailable time
for (acc = mTimeStep; acc < elapsed; acc += mTimeStep)
{
mWorld->Step(mTimeStep, mVelocityIterations, mPositionIterations);
mWorld->ClearForces();
}
// remember not used time
mAccomulated = elapsed - (acc - mTimeStep);
}