【发布时间】:2013-02-18 05:30:03
【问题描述】:
我目前正在制作一个 2D 台球游戏,我必须在其中使用真实的物理模拟。到目前为止,我已经完成了圆形碰撞和弹性碰撞,但是我想要一个可以找到碰撞响应速度的公式,当球在不同点与其他球碰撞时会有所不同,这要提前谢谢。
【问题讨论】:
标签: c++ game-physics directx-9
我目前正在制作一个 2D 台球游戏,我必须在其中使用真实的物理模拟。到目前为止,我已经完成了圆形碰撞和弹性碰撞,但是我想要一个可以找到碰撞响应速度的公式,当球在不同点与其他球碰撞时会有所不同,这要提前谢谢。
【问题讨论】:
标签: c++ game-physics directx-9
有很多方法,但如果你能负担得起让球重叠一点(也就是说,让球的一部分“进入”另一个球),你可以把它变成一个弹簧阻尼系统并用@解决987654321@.
既然胡克定律给了你力量,你需要整合它才能找到动力。动量除以质量就是您要寻找的速度。
看看 this 游戏开发的 spring 物理的优秀介绍(也有他的数值积分介绍的链接)。
编辑:如果您正在寻找实用的解决方案,我建议您使用Box2D physics engine。
【讨论】:
水池碰撞可以被认为是整个板的弹性碰撞,摩擦减慢了它的运动。
不要以圆的角度来考虑碰撞响应。使用向量会缓解这个问题。
圆-圆碰撞速度响应很简单: 1. 检测到碰撞时 2. 求球朝向另一个球的法向速度。 3.交换两个球之间的法线速度 4.解析x和y方向的速度
一个非常有用的网站,可以根据矢量找到速度响应:http://archive.ncsa.illinois.edu/Classes/MATH198/townsend/math.html
【讨论】: