0

我正在做一个突破游戏,我坚持根据球击中桨的位置计算球从桨的反弹。我出来了以下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
4

2 回答 2

0

确保从每个对象的相同参考执行计算,而不是例如桨的中心和球的角。

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

于 2013-07-06T20:40:58.590 回答
0

您应该牢记这一点,ball.xpaddle.x参考ballpaddle左侧

假如说 :

  • 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代表的中间)

于 2013-07-06T21:09:02.200 回答