Android中的弹跳球会跳过速度

时间:2019-07-03 03:42:59

标签: android canvas kotlin draw

我有一个只沿直线运动的球,它从屏幕的顶部和底部反弹。每次这样做都会使速度降低2。球的半径为50。

它工作正常,但是当速度达到4并撞到下一堵墙时,它变为0而不是2,然后下次撞到墙为0。

那是为什么?

private fun update() {
    if (ball.posy > 0) {
        if (ball.direction == "+") {
            ball.posy += ball.velocity
        } else {
            ball.posy -= ball.velocity
        }
    }
    if (ball.posy >= height - 50) {
        ball.direction = "-"
        ball.velocity -= 2
    } else if (ball.posy <= 50) {
        ball.direction = "+"
        ball.velocity -= 2
    }
    invalidate()
}

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法吗?

private fun update() {
    if (ball.posy > 0) {
        if (ball.direction == "+") {
            ball.posy = min(ball.posy + ball.velocity, height - 50)
        } else {
            ball.posy = max(ball.posy - ball.velocity, 50)
        }
    }
    if (ball.posy >= height - 50) {
        ball.direction = "-"
        ball.velocity -= 2
    } else if (ball.posy <= 50) {
        ball.direction = "+"
        ball.velocity -= 2
    }
    invalidate()
}