我目前正在编写像《Breakout》这样的游戏,我想知道如何才能正确地将球从表面弹起。
我采用了将速度旋转 90 度的简单方法,即:
[vx, vy] -> [-vy, vx]
这(毫不奇怪)效果不太好。如果我知道球的位置和速度,以及球将击中的点(但会反弹),我怎样才能将球从该点反弹?
限制条件:
- 我正在使用整数数学(无 FP
任何地方)
- 我所有的表面都很简单
平坦的表面(垂直,
水平或块)
- 我只想以 90 度角弹开
- 所有碰撞都是纯弹性的(这是突破——不需要摩擦等)
我不需要任何特定于语言的代码。如果有人可以提供一个关于如何正确执行此操作的小数学公式,那对我来说效果很好。
Thanks!
假设您只会从垂直或水平表面弹起,则可以分别取消 X 或 Y 方向上的速度。
所以,如果你有 [vx, vy],并且它从垂直的墙上反弹,你就会有 [-vx, vy]。
如果你有 [vx, vy],并且它从水平墙上反弹,你将得到 [vx, -vy]。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)