我有一个只沿直线运动的球,它从屏幕的顶部和底部反弹。每次这样做都会使速度降低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()
}
答案 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()
}