4

我正在尝试使用 3 个变量为跳跃设置动画:跳跃距离、跳跃高度和跳跃“速度”。

这是一个有效的 JSFiddle 演示。但是,我希望动画跳跃是完美的抛物线。

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);
4

1 回答 1

2

我在想正弦?假设 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)   
};
于 2013-03-26T00:31:27.167 回答