在JavaScript中计算跳跃动画

我正在尝试使用3个变量设置跳跃动画:跳跃距离,跳跃高度以及跳跃“速度”.

Here is a working JSFiddle demo.但是,我希望动画跳跃成为一个完美的抛物线.

var y = 300;
var x = 0;
var jh = 100;
var jw = 200;
var c = 0;

    var inter = setInterval(function () {
        c++;
        // if box reaches jump height it should fall down
        y = (c >= jh) ? y + 1 : y - 1;
        // if box reaches jump distance
        if (x == jw) clearInterval(inter);

        x++;

        $('.box').css({
            'top': y + 'px',
            'left': x + 'px'
        });

    }, 20);

最佳答案 我在想什么?假设jh是“跳跃高度”而jw是“距离”而没有清理现有代码,你可以这样做:

var y = 300;
var x = 0;
var jh = 100;
var jw = 200;
var c = 0;
var speed = 3;

var inter = setInterval(function () {
    c++;
    y = getHeightAtX(x);
    if (x >= jw) clearInterval(inter);

    x+=speed;

    $('.box').css({
        'bottom': y + 'px',
        'left': x + 'px'
    });

}, 20);

function getHeightAtX(x) {
 return jh*Math.sin(x*Math.PI/jw)   
};
点赞