我正在尝试在 C++ 中使用 2D 物理引擎。到目前为止,似乎最受欢迎的是 Box2D。不幸的是,Box2D 是一个刚体物理引擎,它并不能真正帮助我实现我想要尝试的东西。
我希望能够定义一个具有多个由弹簧连接的顶点的形状,这样当这个形状与刚性或其他非刚性形状碰撞时,它的形状将是灵活的。
现在我试着想办法在 Box2D 中只使用刚体来做到这一点,但似乎总是有缺陷:
- 使用矩形或线段作为柔性形状的外边缘。这些将与其他形状发生碰撞。不幸的是,它们没有弹性,因此不会看到预期的效果。
- 形状的每个顶点都可以是具有自己的小圆形形状的主体。然后这些物体可以通过弹簧连接在一起。这在形状变形方面会很有效,但想象一下,如果形状落在刚性尖峰上并且尖峰刚刚在顶点之间通过。然后形状会卡在钉子上。
那么在 C++ 中做这种物理的最好方法是什么?最好不必编写整个物理引擎。也许我只是缺少 Box2D 的一个功能。也许这不是正确的选择。那么什么是正确的选择呢?