【发布时间】:2009-12-07 06:35:18
【问题描述】:
我正在实现一个小游戏,但无法让物理正常工作。 在这个游戏中,有一个球(一个在帧之间移动的圆,并且可能会改变半径)和几个墙(线段也在帧之间变化和移动)。我可以正确地检测到碰撞,让球在正确的方向反弹是没有问题的。
当球在一帧中与一条线相交,然后在下一帧中再次与它相交,从而导致双弹跳时,就会出现问题。我可以将球沿线的法线向后移动,直到它处于有效位置,但这会在有问题的线沿其轴线被击中时导致非常奇怪的行为(想象一个乒乓球掉在直立的牙签上,然后突然移到一边,使它在牙签的一侧……)。当球在给定帧中与多条线相交时也会出现一些问题(想象四条线一起形成一个矩形并且球与所述矩形的角相交)——它应该从哪个方向反弹?应该往哪个方向移动?
我并没有具体的问题,但我正在寻找提示或一些有用的教程。到目前为止,我设法找到的所有 2D 仅覆盖矩形交叉点。
如果有什么不同,我会使用 XNA。
谢谢,
卡梅伦
【问题讨论】:
-
您检查过 Farseer 物理引擎吗? codeplex.com/FarseerPhysics
-
其实我刚问完问题就下载了。我正要试一试——到目前为止它看起来不错(我一直在阅读文档)!
-
最后,我无法让引擎做我想做的事,而且文档有些缺乏,所以我回到了我的自定义物理引擎并使用以下一些建议对其进行了改进
标签: xna line collision-detection intersection geometry