我正在尝试创建一个命运之轮游戏。
一切正常,但我找不到降低车轮转速的现实方法。
目前,我只是试图做这样的事情:
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;
但是,这当然不是一个很好的方法,甚至在这里和那里更改值也不是很令人满意。
逐渐降低旋转速度的数学函数是什么?
答案 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