Cocos2D:Box2D可以通过一种物体而不是另一种物体移动的物体

我正在使用Cocos2D 2.0Box2D创建一个简单的平台游戏。 我试图创造一种不能被玩家移动的箱子物体,但是可以被一个大象物体移动。 当玩家冲向箱子时,应该阻止他死在他的轨道上(就像他正在碰到一个静态的Box2D身体)。 如果大象碰到它,它应该被打倒(就像大象正在碰到一个质量/密度小得多的dynamicBox2D体)。 我不能使用碰撞位掩码,因为我当然希望碰撞发生在两种情况下,我只是希望碰撞导致不同的事情取决于哪种types的对象正在打箱子。

任何人都有一个关于如何使这项工作的暗示?

提前致谢!

Solutions Collecting From Web of "Cocos2D:Box2D可以通过一种物体而不是另一种物体移动的物体"

根据你的其他逻辑,你可以使用碰撞过滤来创建一个情景,让玩家忽略这个方块,而是对一个看不见的不可移动的方块做出反应,而大象忽略不可见的方块,而是对可见的方块做出反应。

或者你可以使用postSolvers ,使用通过postSolvers传递的联系对象以这种方式:

if (contact.GetFixtureA().GetBody().itemType == 'player' && contact.GetFixtureB().GetBody().itemType == 'box' ) { contact.GetFixtureB().GetBody().setMass(999); } 

这是一个过度简化的JavaScript示例,您的实现可能会有所不同,但概念是,您可以操纵传递给您设置的postSolver的联系对象所引用的正文。