嘿,我目前正在寻找在 2D 视频游戏中实现碰撞响应的各种方法,类似于 Metanet 的本教程:N 教程我希望在 XNA 中实现一些东西,但任何语言都可以。我对以编程方式实现 比实际理论更感兴趣。我更喜欢对初学者友好的材料,但我确实欢迎更多高级主题。
那么有人可以推荐一些好的 2D 碰撞响应文章/书籍吗?
(PS:我对响应比检测更感兴趣)
嘿,我目前正在寻找在 2D 视频游戏中实现碰撞响应的各种方法,类似于 Metanet 的本教程:N 教程我希望在 XNA 中实现一些东西,但任何语言都可以。我对以编程方式实现 比实际理论更感兴趣。我更喜欢对初学者友好的材料,但我确实欢迎更多高级主题。
那么有人可以推荐一些好的 2D 碰撞响应文章/书籍吗?
(PS:我对响应比检测更感兴趣)
您已经提到的N 教程是一个很好的入门资源。我还推荐非常好的文章2D Polygon Collision Detection。它带有一个很棒的 C# 实现和使用分离轴定理进行多边形碰撞检测的示例,并更好地解释了一些概念。
就碰撞响应而言,这取决于场景。对于游戏,您可能希望根据当前速度检查可能的碰撞,然后简单地调整实际速度以防止碰撞。您还可以实现某种“反弹”效果。在任何情况下,它都可能同时调整物体的速度和方向。
您可以使用分离轴定理进行碰撞检测,也可以使用多边形投影来查找到特定轴上目标的距离。(大多数时候是你移动的向量)。
我真的很喜欢这个,它是一周前刚到货的,除了做相对论效应之外,它是你想要的一切:
http://www.amazon.com/Physics-Game-Programmers-Grant-Palmer/dp/159059472X
你需要多少细节?回答其中一些问题将帮助您消除不符合您需要的软件包。
您是否需要担心对象旋转?然后您需要关注杠杆臂、角动量、惯性矩和扭矩。
不用担心变形吗?然后你需要进行有限元分析、应力/应变等——描述物体内部如何响应外力的东西。
摩擦效应呢?然后你需要摩擦系数,或者可能需要空气阻力的速度模型。
引力效应?电磁效应?其他势力?
如果您想要碰撞响应的基本答案,这里是:
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, )\
我也在搜索相同的信息,到目前为止我发现的最有用的东西是
http://www.myphysicslab.com/collision.html
对我来说更糟糕的是,这是没有摩擦的(切向碰撞脉冲只有正常的脉冲),我认为有这种摩擦脉冲的会更好,但仍然没有找到如何正确实现它的教程
你看过Cocos2d吗?