关于pygame:台球游戏碰撞

Billiards game collision

我选择上课写台球游戏。 一切正常,但我想提高球碰撞的真实感。

对于每个球,我都有一个pygame矩形,这意味着球的中心,球的直径和游戏中的位置。 还有速度矢量(u_x,u_y)。

此时,我检查与collectrect的碰撞,但可以通过测量中心球的距离来更改它。

我已经读过关于动量方程的守恒,但是这里没有考虑球的位置。 两个球的正面冲击不一样,是侧面冲击。

有人可以考虑碰撞时球的位置,为我提供有关碰撞后新球速度的公式的帮助。 非常感谢!


模块euclid将提供帮助。 它包含一个向量类,该向量类具有normal(),dot()等。http://partiallydisassembled.net/euclid.html(您可以将模块复制到项目文件夹中,而无需安装。)

有关公式,请检查:https://gamedev.stackexchange.com/a/7901/6776或http://archive.ncsa.illinois.edu/Classes/MATH198/townsend/math.html#COLLISION

注意:物理学变得越复杂,就越需要使用物理学引擎,例如[在此处输入链接描述] [pymunk]或ODE。 但是,这是一个很好的学习经验。