libgdx在矩形方向上施加力

时间:2017-04-12 17:22:22

标签: java android libgdx box2d

我刚刚开始使用box2d,我试图制作一个火箭(现在的矩形)飞,它只是在游戏开始时垂直站立,我想从底部施加力矩形,因为它是引擎所在的位置,也是矩形所面向的方向。 我试过这个

    body.applyLinearImpulse(getUserData().getBoosterLinearImpulse(), new Vector2(body.getWorldCenter().x, body.getWorldCenter().y - Constants.ROCKET_HEIGHT), true);

这是在按下屏幕右下角时执行的方法。它仅在矩形静止时起作用。 我显然不知道自己在做什么。 我还有另一个问题:applyLineairForce和applyForce之间的区别是什么,以及如何最好地学习使用box2d,因为我觉得它不容易(这不是问题)?

1 个答案:

答案 0 :(得分:0)

如果我理解这一点你想知道applyLinearImpulse和applyForce之间的区别。冲动是一次性的力量应用,通常用于游戏中的跳跃,而力量则是每帧用来增加汽车速度的力量。

为了让你对火箭施加力,你可以使用这样的东西:

       // gets x force based on angle
        float x = (float)Math.sin(body.getAngle() - Math.PI); // minus PI as objects start off facing right
        // gets y force based on angle
        float y = (float)Math.cos(body.getAngle());

        //apply force to center (applies force to middle so no rotation )
        //body.applyForceToCenter( new Vector2(
        //      body.getMass()* (x * 12),
        //      body.getMass()*(y*12)), true);

        //NOTE: bodies must be set to .fixedRotation = false in order to rotate;

        //apply force to a point on body (will create rotational force ) 
        body.applyForce( new Vector2(
                body.getMass()* (x * 12),//x force to apply
                body.getMass()* (y * 12)), //y force to apply
                // apply force to body at 0.5f(halfway for 1f wide object) x and -5 y
                body.getWorldPoint(new Vector2(0.5f,-5)),true);