Java 2d:放慢旋转速度(就像命运之轮一样)

时间:2018-08-27 12:30:05

标签: java rotation

我正在尝试创建一个命运之轮游戏。

一切正常,但我找不到降低车轮转速的现实方法。

目前,我只是试图做这样的事情:

    if (spin > 3) spin-=0.030;
    if (spin > 2) spin-=0.020;
    if (spin > 1) spin-=0.015;
    if (spin > 0.5) spin-=0.010;
    if (spin > 0) spin-=0.005;
    if (spin < 0) spin=0;

但是,这当然不是一个很好的方法,甚至在这里和那里更改值也不是很令人满意。

逐渐降低旋转速度的数学函数是什么?

2 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

final float DECEL = 0.95;
final float FRICTION = 0.001;
spin = spin * DECEL - FRICTION;

这假设它是在固定的时间间隔内被调用的。 还有多余的“-FRICTION”(摩擦),因此车轮实际上会停止。

如果自上次绘制帧以来以时间增量调用了绘制循环,则可以使用它来调整DECEL和FRICTION参数。 例如,您可能有:

final float DECEL = 0.95;
final float FRICTION = 0.001;
// calculate how much the wheel will slow down
float slowdown = spin - (spin * DECEL - friction);

// Apply the frametime delta to that
slowdown *= frameDelta;
spin = spin - slowdown;

这当然需要对DECEL和FRICTION参数进行一些实验。

答案 1 :(得分:0)

您可以尝试使用等于您的旋转速度的指数递减方程对减速进行建模。然后通过限制旋转的时间来停止纺车(因为y = 0是指数方程式中的一个渐近线)。

float spinSpeed;  //will track the spinning speed using an equation
double spinTime = 4;  //limits total spin time using an equation

for (i=1;i<=4;i++) {  //will track time in seconds
spinSpeed = math.pow[5.(-i+3)];  //equivalent  to y=5^(-(x-3))
}  //be sure to import math