我已经实现了简单的3D游戏物理引擎。我已经有适当的碰撞检测功能,现在我正在尝试找出碰撞响应部分。我正在使用基于脉冲的方法来计算碰撞后的速度。这工作得很好,但是并不能完全阻止物体相互渗透。因此,我还有其他代码来解决渗透问题。目前,我只是沿着接触法线将实体移动了穿透深度的一半-第一个实体沿接触法线的方向移动,第二个实体沿相反的方向移动。
在大多数情况下都可以,但是有一些不良影响。例如,想象一个狭窄的走廊和一个物体在其中移动。如果对象撞到走廊的一堵墙,则穿透分辨率会将其移到相对的墙,然后在下一帧中移回第一堵墙,依此类推。效果是物体在墙壁之间确实非常快地振动,这不是很漂亮。
所以我的问题是,是否有更好的方法来解决渗透问题?也许不移动物体,只是以某种方式调整它们的速度(除了脉冲计算),以使它们停止彼此相对移动,并且穿透力在接下来的两帧中自行解决。我只是在猜。有任何想法吗?