我正在研究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;
}
Run Code Online (Sandbox Code Playgroud)
这是一种非常简化的方法,不依赖于质量或实际摩擦(代码内摩擦只是一种阻止运动的通用力).它的效果很好,因为"速度*=摩擦力"; 部分保持速度不超过某一点.然而,正是这种最高速度及其与加速和摩擦的关系,我有点迷失.
我想要做的是设置一个最高速度,以及达到它所需的时间,然后使用它们来获得加速度和摩擦值.
即
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 …Run Code Online (Sandbox Code Playgroud)