限制对象到 Box2D 中的路径

问题描述

是否可以将 Box2D 中的对象限制为路径?

具体来说,我想在过山车之类的地方移动汽车,并使用 Box2D 进行物理和碰撞检测。

这可行吗?

解决方法

可以在 Box2D 中将对象限制为路径,是的。

这里有一些方法可以实现这一点,其中第二种方法更接近您特别寻找的内容:

  • 使用关节。棱柱关节(使用 b2PrismaticJointDef)将提供一条直线路径。示例用途可以在 Box2D 测试台代码中找到,如 slider_crank_1.cppslider_crank_2.cpp。同时,距离关节 (b2DistanceJointDef) 可用于将对象保持在圆形路径上。同样,其他关节也会根据对象的用途和配置限制对象的路径。
  • 使用其他物体充当路径的墙壁。可以在 Box2D character_collision.cpp 测试台代码中找到此类示例。