繁体   English   中英

iPhone cocos2d box2d身体碰撞检测无需施加力

[英]iPhone cocos2d box2d body collision detection without applying force

我正在为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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM