我正在尝试在C++中使用2D物理引擎进行实验。目前,最流行的似乎是Box2D。不幸的是,Box2D是一个刚体物理引擎,这并不能真正帮助我实现想要尝试的内容。
我希望能够定义一个形状,该形状由多个由弹簧连接的顶点组成,以便当这个形状与刚性或其他非刚性形状碰撞时,其形状将是灵活的。
现在,我已经尝试了使用仅刚体在Box2D中完成此操作的方法,但总是存在缺陷:
1. 对于灵活形状的外部边缘使用矩形或线段。这些会与其他形状发生碰撞。不幸的是,它们并不具有弹簧性,因此无法看到所需的效果。
2. 形状的每个顶点可以是一个带有自己小圆形状的物体。然后,这些物体可以通过弹簧连接在一起。在形状变形方面,这个方法非常有效,但是请想象一下,如果形状落在一个刚性尖刺上,并且尖刺刚好穿过顶点之间的空隙,那么形状将被卡在尖刺上。
那么,在C++中执行这种物理操作的最佳方法是什么?最好不要编写整个物理引擎。也许我只是忽略了Box2D的某些功能。也许它并不是正确的选择。那么,什么才是正确的选择?
我希望能够定义一个形状,该形状由多个由弹簧连接的顶点组成,以便当这个形状与刚性或其他非刚性形状碰撞时,其形状将是灵活的。
现在,我已经尝试了使用仅刚体在Box2D中完成此操作的方法,但总是存在缺陷:
1. 对于灵活形状的外部边缘使用矩形或线段。这些会与其他形状发生碰撞。不幸的是,它们并不具有弹簧性,因此无法看到所需的效果。
2. 形状的每个顶点可以是一个带有自己小圆形状的物体。然后,这些物体可以通过弹簧连接在一起。在形状变形方面,这个方法非常有效,但是请想象一下,如果形状落在一个刚性尖刺上,并且尖刺刚好穿过顶点之间的空隙,那么形状将被卡在尖刺上。
那么,在C++中执行这种物理操作的最佳方法是什么?最好不要编写整个物理引擎。也许我只是忽略了Box2D的某些功能。也许它并不是正确的选择。那么,什么才是正确的选择?