我选择为课堂写一个台球游戏。一切顺利,但我想提高球碰撞的真实感。
对于每个球,我有一个pygame矩形,这意味着,球中心,球的直径和游戏中的位置。还有速度矢量(u_x,u_y)。
此时我用碰撞检查碰撞,但我可以改变测量中心球的距离。
我已经阅读过关于动量方程守恒的内容,但是没有考虑球位置。两个球的正面碰撞不同于侧向碰撞。
有人可以在碰撞后考虑球位置的碰撞后新球速度的公式中帮助我。非常感谢!
答案 0 :(得分:1)
模块euclid
会有所帮助。它包含一个vector类,它有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。但是,这是一个很好的学习经历。