Я работаю над 2D-игрой, где я пытаюсь ускорить объект до максимальной скорости, используя некоторый базовый физический код.
Здесь псевдокод для него:
const float acceleration = 0.02f;
const float friction = 0.8f; // value is always 0.0..1.0
float velocity = 0;
float position = 0;
move()
{
velocity += acceleration;
velocity *= friction;
position += velocity;
}
Это очень упрощенный подход, который не зависит от массы или фактического трения (трение в коде - это всего лишь общая сила, действующая против движения). Он хорошо работает как "скорость * = трение"; часть удерживает скорость от прохождения определенной точки. Тем не менее, это максимальная скорость и ее связь с ускорением и трением, где я немного теряюсь.
То, что я хотел бы сделать, это установить максимальную скорость и количество времени, которое требуется для ее достижения, а затем использовать их для получения значений ускорения и трения.
то есть.,
const float max_velocity = 2.0;
const int ticks; = 120; // If my game runs at 60 FPS, I'd like a
// moving object to reach max_velocity in
// exactly 2 seconds.
const float acceleration = ?
const float friction = ?