【问题标题】:How to apply an impulse to an object WITHOUT box2d libgdx如何在没有 box2d libgdx 的情况下对对象施加脉冲
【发布时间】:2026-01-03 03:10:02
【问题描述】:

我有一个游戏快完成了,但我忘记了重力和冲动,我不想实现 box2d,我让重力工作,但是有人可以解释如何在没有 box2d 的情况下应用冲动吗?

【问题讨论】:

    标签: java android libgdx physics gravity


    【解决方案1】:

    您可以通过将速度添加到对象速度来模拟脉冲。像这样:

    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(new Vector2(3, 2));。如果您在每一帧中更新您的所有GameObjects,您的对象会在给出脉冲后减速。如果没有进一步的冲动撞击您的物体,这就是您所期望的。但是,以现实的方式做到这一点很困难,可能只能通过使用 box2d 来实现。但是,您可能会对其进行调整,并希望它可以在您的游戏中发挥作用。记得在那之后始终应用你的重力。

    【讨论】:

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