Простой способ
Узнайте немного о векторах. http://chortle.ccsu.edu/VectorLessons/vectorIndex.html
Движение обычно рассчитывается путем добавления вектора, масштабированного по времени, к текущей позиции. (Математический разговор делает простые вещи такими сложными).
В основном: new_Pos = old_Pos + mov_Vec * time_delta
Таким образом, изменяя mov_Vec, вы можете увеличивать / уменьшать скорость.
Вы также можете сделать это для x, y new_x = old_x + mov_x * time_delta
Использование библиотеки физики
Если вы используете библиотеку физики, вы можете применить силу к объекту, чтобы переместить его. Вы также можете установить угловую скорость, если хотите, чтобы она вращалась.
Если бы вы использовали Box2d, вы бы сделали что-то вроде этого:
body->ApplyImpulse( b2Vec2(1,1), body->GetWorldCenter() );
Существует разница между приложением силы и импульса в box2d
Некоторые сайты, чтобы проверить