嘿,我目前正在寻找在2D视频游戏中实现碰撞响应的各种方法,类似于本教程Metanet:N Tutorial我想在XNA中实现一些东西,但任何语言都是精细。我对以编程方式实施比对实际理论更感兴趣。我更喜欢更适合初学者的材料,但我确实欢迎更多高级主题。
那么有人会建议一些很好的2D碰撞响应文章/书吗?
(PS:我对回答比对检测更感兴趣)
答案 0 :(得分:15)
您提到的N tutorial是一个很好的资源。我还推荐非常好的文章2D Polygon Collision Detection。它带有一个很棒的C#实现和使用分离轴定理进行多边形碰撞检测的示例,并更好地解释了一些概念。
就响应碰撞而言,它取决于场景。对于游戏,您可能需要根据当前速度检查可能的碰撞,然后只需调整实际速度以防止碰撞。你也可以实现某种“反弹”效果。无论如何,它可能会调整物体的速度和方向。
您可以使用分离轴定理进行碰撞检测,还可以使用多边形投影查找特定轴上目标的距离。 (大多数时候你移动的矢量)。
答案 1 :(得分:3)
我真的很喜欢这个,它刚刚在一周前到达了,你可能想要的一切都不能做相对论效果:
http://www.amazon.com/Physics-Game-Programmers-Grant-Palmer/dp/159059472X
答案 2 :(得分:1)
您需要多少细节?回答其中一些问题可以帮助您消除那些无法满足您需求的软件包。
您是否需要担心物体旋转?然后你需要关注杠杆臂,角动量,惯性矩和扭矩。
您是否担心变形?然后你需要进入有限元分析,压力/应变等 - 描述物体如何在内部对外力作出反应的东西。
摩擦效应怎么样?然后你需要摩擦系数,或者可能需要空气阻力的速度模型。
引力效应?电磁效应?其他力量?
答案 3 :(得分:1)
如果你想要一个碰撞响应的基本答案,这里是:
for each pair of objects that collide
ask gently to the collision detection lib their interpenetration distance
Apply an impulse (i.e. a force in the duration of the frame) to both objects :
force proportional to penetration depth (you will have to tune the coef by hand)
direction : perpendicular to the collision normal.
application point : the collision point (approximately, since it s not a point anymore but a volume)
integrate (Euler, Verlet, )\
答案 4 :(得分:0)
物理引擎非常复杂。使用现有产品会好得多。
如果您想在游戏中使用物理,请使用Farseer或Box2D绑定。如果你想了解物理学,可以考虑制作Box2D的C#端口或者Chipmunk。如果你只是好奇,他们所有的代码都是开源的。
答案 5 :(得分:0)
我也在搜索相同的信息,最有用 我到目前为止找到的东西是
对我来说,最糟糕的事情就是这样做 没有摩擦(相切碰撞冲动 只有正常的冲动)而我认为那个 这种摩擦冲动会更好但仍然如此 没有找到教程如何正确实现 该答案 6 :(得分:-3)