小编Rad*_*dek的帖子

简单的基于物理的运动

我正在研究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)

math physics 2d

30
推荐指数
1
解决办法
2万
查看次数

标签 统计

2d ×1

math ×1

physics ×1