提高“弹跳”对象的速度

时间:2015-12-15 16:37:40

标签: javascript

我不太了解JS,但我必须做它的任务。现在我有一个球从屏幕的一侧反弹到另一侧。随着每次反弹,屏幕的颜色和球的变化。但是我希望每次反弹都会略微提高速度(或者每次弹跳时随机速度都会变得更容易)。这是我移动,弹跳和颜色变化的代码:

    fill(r,g,b);
    ellipse(circleX, circleY, circleSize, circleSize);

    circleX += moveX;

    if (circleX > width - circleSize / 2 || circleX < circleSize / 2) {
            moveX = -moveX;
            r = random(255);
            g = random(255);
            b = random(255);
        }

moveX现在总是5,转回时变为-5。但我喜欢它,如果它变成-6然后+7再次前进。或类似的东西至少。 我提前感谢你们帮助我,请你解释一下,就像你正在给孩子解释一样。

3 个答案:

答案 0 :(得分:1)

首先,让我们创建一个函数,它接受一个数字并返回+1表示非负数(正数或0)和-1表示负数,即它是符号

function sign(x) {
    if (x < 0) return -1;
    return 1;
}

sign的完整实施会为0提供特殊情况,并且available natively in ES6

接下来,当需要更改moveX将其大小(绝对值)和符号分开时,增加它的幅度并在翻转标志之前将两个部分重新组合在一起

moveX = -sign(moveX) * (Math.abs(moveX) + 1);

答案 1 :(得分:0)

跟踪圈子的反弹次数&#34;反弹&#34;并将其添加到速度。

var base_speed = 5;
var bounces = 0;
var direction = 1; //positive for moving right, negative for moving left
var moveX = base_speed + bounces * direction;

circleX += moveX;

if (circleX > width - circleSize / 2 || circleX < circleSize / 2) {
    direction = -direction;
    bounces++;
    r = random(255);
    g = random(255);
    b = random(255);
}

答案 2 :(得分:0)

您需要在碰撞检测代码中添加另一个测试以提高速度。如果速度为正,则要添加1.如果速度为负,则需要减去1.您的代码看起来像这样......

String b64 = Base64.encodeBase64String(imageInByteArray);