Java 2d: замедление вращения (как колесо фортуны) - PullRequest
0 голосов
/ 27 августа 2018

Я пытаюсь создать игру «Колесо Фортуны».

Все работает нормально, но я не могу найти реалистичный способ замедления скорости вращения колеса.

В настоящее время я просто пытался сделать что-то вроде этого:

    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 голосов
/ 27 августа 2018

Вы можете попытаться смоделировать замедление, используя экспоненциально убывающее уравнение, равное вашей скорости вращения. Затем остановите вращающееся колесо, установив ограничение на продолжительность его вращения (поскольку 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 
0 голосов
/ 27 августа 2018

Вы можете попробовать следующее:

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...