Java 如何在没有box2d libgdx的情况下对对象应用脉冲

Java 如何在没有box2d libgdx的情况下对对象应用脉冲,java,android,libgdx,physics,gravity,Java,Android,Libgdx,Physics,Gravity,我有一个游戏快完成了,但是我忘记了重力和冲量,我不想实现box2d,我让重力发挥作用,但是有人能解释一下没有box2d如何应用冲量吗?你可以通过在物体速度上加一个速度来模拟冲量。就像这样: class GameObject { private Vector2 velocity = new Vector2(); public void applyImpulse(Vector2 impulse) { velocity.add(impulse); }

我有一个游戏快完成了,但是我忘记了重力和冲量,我不想实现box2d,我让重力发挥作用,但是有人能解释一下没有box2d如何应用冲量吗?

你可以通过在物体速度上加一个速度来模拟冲量。就像这样:

class GameObject {
    private Vector2 velocity = new Vector2();

    public void applyImpulse(Vector2 impulse) {
        velocity.add(impulse);
    }

    public void update(float deltaTime) {
        float dampingPerSecond = 0.5f;
        float dampingFactor = Math.max(0f, 1 - deltaTime*dampingPerSecond);
        velocity.scl(dampingFactor);
    }
}

现在您可以这样使用它:
object.applyImpulse(新向量2(3,2))。如果你在每一帧中更新你所有的
游戏对象
s,你的对象会在产生冲动后减速。如果没有更多的脉冲击中你的物体,这就是你期望发生的事情。但是,以现实的方式执行此操作很困难,可能只能通过使用box2d来实现。不过,您可能会对此进行调整,并希望它能在您的游戏中发挥作用。不过,记住在那之后要始终施加重力。

每一帧。这就是为什么它需要deltaTime。