我有一个使用 Box2d 的非常简单的 LibGDX 游戏。现在,它只是一艘在地图上移动的船。如果我使用该 body.setTransform()
方法更改船的位置,我可以通过键盘控制使船移动,但这显然没有利用 Box2d 的功能。我想使用该applyForce()
方法控制玩家船,但由于某种原因,该方法无济于事,无论我设置的力有多高或多低。我也试过applyLinearImpulse()
and setLinearVelocity()
,两者都有同样的效果:什么都没有。我通过记录确认我的船的速度实际上保持在恒定的 0.0,而不仅仅是微小的变化。
以下是游戏循环和实体中的相关内容:
有问题的部分特别是:
public void update(){
this.applyIntendedMovement();
}
public void applyIntendedMovement(){
if(this.isMovingUp){
this.body.applyForceToCenter(new Vector2(0,100).scl(this.SPEED_FACTOR), true);
}
}
为什么叫applyForce()
什么都不做?另外,我在创建玩家身体时明确设置了密度,但是当我在任何给定时刻检查玩家的质量时,它是 0.0。我知道这两个问题很有可能是相关的,但我不知道该怎么做。