2014-06-23 4 views
0

У меня есть игра, которая почти закончена, но я забыл о гравитации и импульсе, я не хотел реализовывать box2d, и я получил гравитацию, чтобы работать, но может ли кто-нибудь объяснить как применить импульс без box2d?Как применить импульс к объекту БЕЗ box2d libgdx

ответ

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));. Если вы обновите все свои GameObject s в каждом кадре, ваш объект будет замедляться после подачи импульса. Это то, что вы ожидали бы, если никакие дальнейшие импульсы не поразили ваш объект. Выполнение этого реалистичным способом, но это сложно и может быть достигнуто только с помощью box2d. Однако вы можете настроить его и надеяться, что он будет работать в вашей игре. Не забудьте всегда применять силу тяжести после этого.

+0

Я не понимаю, мог бы я назвать обновление каждую секунду или когда я его назову? –

+0

Каждый кадр. Вот почему он принимает deltaTime. – noone

Смежные вопросы