我正在为 iPhone 编写 Cocos2D box2d 游戏。我有 2 个动态物体,我希望它们是从外部施加的力,但它们不会相互施加力并检测到它们的碰撞。我怎样才能做到这一点?
我也希望他们在碰撞后一起移动到同一个位置。我怎样才能做到这一点?
我正在为 iPhone 编写 Cocos2D box2d 游戏。我有 2 个动态物体,我希望它们是从外部施加的力,但它们不会相互施加力并检测到它们的碰撞。我怎样才能做到这一点?
我也希望他们在碰撞后一起移动到同一个位置。我怎样才能做到这一点?
他们不会互相施力并检测到他们的碰撞
听起来您可能想查看碰撞过滤。这个答案有一些代码可以动态改变身体的碰撞过滤指数https://stackoverflow.com/a/11283206/735204
碰撞后它们在同一位置一起移动
可能是某种接头(例如焊接接头?)
来自手册: http: //www.box2d.org/manual.html
关节用于将物体约束到世界或相互约束。游戏中的典型例子包括布娃娃、跷跷板和滑轮。关节可以以许多不同的方式组合以创建有趣的动作。
一些关节提供限制,因此您可以控制运动范围。一些关节提供可用于以规定速度驱动关节直到超过规定力/扭矩的马达。
关节马达有多种用途。您可以通过指定与实际位置和所需位置之间的差异成比例的关节速度来使用电机来控制位置。您还可以使用电机来模拟关节摩擦:将关节速度设置为零并提供一个小但显着的最大电机力/扭矩。然后电机将试图阻止关节移动,直到负载变得太强。
对不起最后一个答案,只是检查我可以写它。
那这个呢?
bodyDef.isSensor = true;
并使用 ContactListener 检测碰撞。Box2d 用于碰撞检测
您也可以使用 box2d 过滤器。例如:
记住:如果 groupIndex < 0,相同的物体永远不会相互碰撞。这就是你所需要的。
b2Filter bodyFilter;
bodyFilter.groupIndex = -1;
bodyFilter.categoryBits = 0x0002;
fixtureDef.filter = bodyFilter;