Libgdx线性速度无法工作

4

我第一次使用libgdx开发游戏。我正在使用以下代码为我的对象设置线性速度,在步进世界中:

world.step(Gdx.app.getGraphics().getDeltaTime(), 6, 2);

设置速度
body.setLinearVelocity(new Vector2(new Vector2(100, 100)));

网页主体被设置成动态的,但物体移动不足。

vX = 100太低了吗?


2
你是每个时间步骤都设置速度吗?并且不要将delta时间发布到world.step中。请使用固定时间步长。 - Pavel
1
body.setLinearVelocity(new Vector2(new Vector2(100, 100))); 你对这个期望是什么? - Pranav008
1个回答

6

如果你的游戏宽度和高度太大,比如800x480之类的,那么就将其除以40,比如20x12...

这是因为box2d速度被限制在2个单位。而你想要更多的单位每个时间步,但你的屏幕太大无法实现...所以如果缩短你的世界,速度问题就会得到解决。


我的游戏宽度和高度分别为800和400。如何缩短世界? - Shidil Eringa
@ShidilDinesh 假设您当前的box2d物体大小为80 * 40,请将其大小改为80 / 40f和40 / 40f,这将使世界中的对象尺寸变小。让每个物体的大小除以一个常数因子。还要使相机的大小为800 / 40f和40 / 40f,这将解决您的问题。 - Vikalp Jain
@ShidilDinesh 在box2d中使用的每个元素都必须除以一个常数值,例如,重力也必须除以您用于缩短世界的相同因子。 - Vikalp Jain
我有一个大小为800x480的正交相机,并且在我的游戏中使用了scene2d。我该怎么办?如何更改box2d身体的大小? - Shidil Eringa
@ShidilDinesh 当您为Box2d身体创建形状时,请通过将所有值除以40来提供它们,并创建大小为20 * 12的相机。 - Vikalp Jain

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接