恒定的box2d体一次移动到一点

时间:2013-10-19 21:43:26

标签: android box2d andengine

我在Andengine中有box2d身体。我想将这个身体从(0,0)一次移动到(100,100)一次(恒定速度)。它怎么可能?我试过这段代码:this.body.setLinearVelocity(new Vector2(1,0));但它正在不停地移动。

1 个答案:

答案 0 :(得分:0)

我想沿着预定义路径移动的最简单方法是使用Body.setTransform(...)。这样我们基本上可以忽略所有的力,摩擦力,扭矩,碰撞等,直接设置身体的位置。

我不知道Andengine,所以这只是伪代码:

public void updateGameLoop(float deltaTime) {
    Vector2 current = body.getPosition();
    Vector2 target = new Vector2(100, 100);

    if (!current.equals(target)) {
        float speed = 20f;
        Vector2 direction = target.sub(current);
        float distanceToTarget = direction.len();
        float travelDistance = speed * deltaTime;

        // the target is very close, so we set the position to the target directly
        if (distanceToTarget <= travelDistance) {
            body.setTransform(target, body.getAngle());
        } else {
            direction.nor();
            // move a bit in the target direction 
            body.setTransform(current.add(direction.mul(travelDistance)), body.getAngle());
        }
    }
}