Например, у меня есть объект, который следует за мышью по горизонтали, его минимальная позиция равна 100, а максимальная равна 200.
В пределах этого диапазона он следует за мышью линейно, то есть 1 единица позиции мыши равна 1единица измерения положения объекта.
Теперь, если мышь находится за пределами диапазона (ниже 100 или выше 200), я хочу, чтобы она начала применять трение, поэтому объект грациозно останавливается по мере удаления от диапазона,например:
Mouse position | Object position
200 200
220 205
240 209
260 212
280 215
300 217
320 218
340 219
360 220
380 220
400 220
...
Мне удалось реализовать это так в обработчике перемещения мыши:
if (mousePosition > 200 || mousePosition < 100) {
delta = mousePosition - objectPosition;
objectPosition += delta * 0.25; // 0.25 if friction factor
}
Но есть ли лучший способ?Как реализовать функцию вне обработчика перемещения мыши:
getObjectPosition(mousePosition) {
return // ???
}
Вопрос не зависит от языка.