我目前正在编写一个类似Breakout的游戏,我想知道如何正确地让球从表面弹开。
我采用了旋转速度90度的天真方法,具体如下:
[vx, vy] -> [-vy, vx]
很明显,这种方法并不奏效。如果我知道球的位置和速度,以及球将要撞上但实际上会反弹的点,那么我该如何让它反弹到那个点?
限制条件:
- 我使用整数计算(无浮点数)
- 所有表面都是简单的平面(垂直、水平或块状)
- 我只想以90度角反弹
- 所有碰撞都是纯弹性的(这是打砖块游戏——不需要摩擦等)
我不需要任何特定语言的代码。如果有人能提供一个小的、数学公式来正确地完成这个问题,那对我来说就足够了。
谢谢!
[vx, vy] -> [-vx, -vy]
。现在你正在旋转90°。 - kennytm