计算球的反弹

时间:2013-07-06 20:29:37

标签: math lua geometry bounce

我正在进行一场突破性的比赛,我根据它击中球拍的位置计算了球从桨的反弹计算了一点点。我出现了以下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

2 个答案:

答案 0 :(得分:0)

确保在每个对象上使用相同的引用执行计算,而不是例如球的中心和球的角落。

(另外,考虑使用保持速度相同[或非常接近]的方程式,即使角度发生变化。)

答案 1 :(得分:0)

您应该记住,ball.xpaddle.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/2paddle.x - padde.w/2代表球拍 的中间位置