1

我有一个使用 Box2d 的非常简单的 LibGDX 游戏。现在,它只是一艘在地图上移动的船。如果我使用该 body.setTransform()方法更改船的位置,我可以通过键盘控制使船移动,但这显然没有利用 Box2d 的功能。我想使用该applyForce()方法控制玩家船,但由于某种原因,该方法无济于事,无论我设置的力有多高或多低。我也试过applyLinearImpulse()and setLinearVelocity(),两者都有同样的效果:什么都没有。我通过记录确认我的船的速度实际上保持在恒定的 0.0,而不仅仅是微小的变化。

以下是游戏循环和实体中的相关内容:

http://pastebin.com/bsA4fVPn

有问题的部分特别是:

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。我知道这两个问题很有可能是相关的,但我不知道该怎么做。

4

1 回答 1

0

呃,我觉得自己好傻。我意识到在我已经创建了身体之后我正在将我的 bodyDef 设置为 Dynamic。我只是重新排列了一些代码行,它可以工作。对不起各位。

于 2013-05-15T18:59:01.863 回答