Java 施加的力-Libgdx

Java 施加的力-Libgdx,java,android,libgdx,Java,Android,Libgdx,大家好,我试着用libgdx做这个简单的游戏,一切都很好,直到我注意到我需要施加一个很大的力来让玩家移动一点,有没有办法让它需要更少的力? 这是我渲染玩家的游戏屏幕。 ` 感谢大家的回答Box2D是一个物理引擎,所以它试图在游戏中模拟现实生活中的物理。因此,如果你的物体又大又重,移动它需要很大的力 为了使你的物体能够以较小的力移动,你可以使它们变小,或者改变它们的密度,使它们变轻,从而使它们能够以较小的力移动 要更改密度,请在fixtureDefinition中设置它 FixtureDef fd

大家好,我试着用libgdx做这个简单的游戏,一切都很好,直到我注意到我需要施加一个很大的力来让玩家移动一点,有没有办法让它需要更少的力? 这是我渲染玩家的游戏屏幕。 `


感谢大家的回答

Box2D是一个物理引擎,所以它试图在游戏中模拟现实生活中的物理。因此,如果你的物体又大又重,移动它需要很大的力

为了使你的物体能够以较小的力移动,你可以使它们变小,或者改变它们的密度,使它们变轻,从而使它们能够以较小的力移动

要更改密度,请在fixtureDefinition中设置它

FixtureDef fdef = new FixtureDef();
fdef.density=0.1f; // (weight: range 0.01 to 1 is good)
fdef.friction = 0.7f; // (how slippery it is: 0=like ice 1 = like rubber)
fdef.restitution = 0.3f; //(how bouncy is it 0= not bouncy 1 = 100% bouncy)
我注意到的另一件事是,在这条线中,你使用的是一个像素渗透率比率:

getBody().applyLinearImpulse(new Vector2(-Logang.PPM,0f), getBody().getWorldCenter(), true);
您不应该对力使用此值,因为这是用于将box2d world转换为渲染坐标,您可以使用以下代码将力应用于中心

getBody().applyLinearImpulse(new Vector2((10f*getBody().getMass()),0f), getBody().getWorldCenter(), true);

作为旁注,冲量用于产生单一作用力,而body.applyForceToCenter(作用力、尾流);用于随时间施加恒定力。尝试使用“施加力”方法,看看这是否有帮助。

有没有办法做到这一点?如果有,你能给我一个这样做的指导吗?谢谢你的帮助,我已经更新了我的答案,告诉你如何改变密度,摩擦和恢复。我试过这么做,但它让球员移动得更慢。我已经更新了我的答案。如果您对这些建议有任何成功之处,请告诉我。谢谢您的回答,但仍然无效
getBody().applyLinearImpulse(new Vector2(-Logang.PPM,0f), getBody().getWorldCenter(), true);
getBody().applyLinearImpulse(new Vector2((10f*getBody().getMass()),0f), getBody().getWorldCenter(), true);