2D绳索碰撞检测


13

我想创建一条可以与以下youtube视频中的对象碰撞的绳索:

2D游戏物理绳

我认为您要实现Verlet集成,该集成使用点并将这些点与线连接起来。我试图弄清楚您将对绳索应用哪种类型的碰撞检测以在视频中获得效果。

我在想您必须对每个点做一些CD。我想使用box2D,所以我想知道使每个点都成为刚体起作用吗?任何意见,将不胜感激。


1
如果您仔细地观看链接中的视频,那么很明显,被模拟的“绳索”实际上是一条链,即,一条直线上连接着许多不灵活的线段,而不是连续灵活的图元。当绳索缠绕小的圆形障碍物时,这一点最为明显。您可以看到角落旋转。一条链比一条连续的绳索要容易得多。每个链接只是一个冲突原语,它们永久地相互连接。要使行为更具说服力,请使每个链接都非常刚硬,而不是完全不灵活。
Paul Z

Answers:


6

由于使用的是Box2D,因此可以创建一系列矩形,并使用Box2D的关节将它们连接起来。那里有绳子。

为了避免拐角从弯曲的绳索中戳出,我可以想象两个选择:

  1. 给您的绳段倒圆角(这样它们就不再是矩形了)
  2. 使该绳索本身不可见,仅用于物理。取得每个帧中关节的位置,并用它在飞行中看到绳子,玩家看到。

警告:我从未尝试过这样做,但是当您发布的视频实际上变相显示同一件事时,我看不到一系列连接的矩形如何失败。

编辑:我刚刚看到PaulZ,我也意识到了同样的事情。快去读他对这个问题的评论。


2

一个快速的谷歌把它扔在这里。使用Box2D实现简单绳索的演示,说明和代码(在Flash中)。绳索与自身碰撞,并与场景顶部的块碰撞。


0

这就是我要做的,将直线上的每个点都做成一个圆,并做足够多的点使圆重叠。将每个点系到自己的邻居,而不是标准碰撞,此系绳应使两个点之间保持固定的距离。

我不知道Box2D,但我猜那里需要功能。


0

最初,Box2D的绳索桥演示由薄盒制成,并带有点对点约束。那将是一个很好的起点(我不知道它是否仍与该演示一起提供,但是重新创建起来很简单)。

将绳索作为具有距离约束的粒子而独立于刚体模拟器非常容易(如您所述,使用Verlet集成和约束解决方案,如本文所述:http : //www.gamasutra.com/resource_guide/ 20030121 / jacobson_pfv.htm),但是如果您希望刚体对您的绳索起反应(如视频中那样,带有悬空的框),则它会变得更加复杂。我将从Box2D之类的一整套工具开始,然后进行反向工作,然后尝试从粒子中构建。


0

我记得这个Speedeack 2002的Allegro游戏:Cupid。它包含一个与风景碰撞的绳索的实现。请参阅heart_tails.cpp文件中的PhysParticles和HeartTrails类的源代码

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.