我正在进行一场突破性的比赛,我根据它击中球拍的位置计算了球从桨的反弹计算了一点点。我出现了以下ball.vx = (ball.x - paddle.x) / 10
弹跳,但在桨的两侧都没有。例如,如果球击中桨的最左侧,ball.vx将为-3.2,如果最右侧为1.6。
我做的是: ball.vy = 4 ball.vx =(ball.x - paddle.x)/ 10
ball.x = ball.x + ball.vx
ball.y = ball.y + ball.vy
答案 0 :(得分:0)
确保在每个对象上使用相同的引用执行计算,而不是例如球的中心和球的角落。
(另外,考虑使用保持速度相同[或非常接近]的方程式,即使角度发生变化。)
答案 1 :(得分:0)
您应该记住,ball.x
和paddle.x
是指球和球拍的左侧 >
假设:
ball.r
是球的半径 paddle.w
是划水艇的宽度 你应该尝试类似的东西:
<击> ball.vx = (ball.x - ball.r/2 - paddle.x - padde.w/2) / 10
击>
更新:
ball.vx = ((ball.x + ball.width/2) - (paddle.x + padde.w/2)) / 10
(ball.x - ball.r/2
和paddle.x - padde.w/2
代表球和球拍 的中间位置