2011-10-18 81 views
1

我增加了b2BodyDef我CCScene像这样:Box2D碰撞检测?

b2BodyDef platformBodyDef; 
    platformBodyDef.type = b2_dynamicBody; 
    platformBodyDef.position.Set(40, 495); 
    platformBodyDef.userData = platforms; 
    _body = _world->CreateBody(&platformBodyDef); 

我知道我应该使用接触听众,但我是新来的Box2D这就好比另一种语言给我,我这样怎么会是代码,看看我的CCScene中的一个CCSprites是否与这个b2BodyDef相冲突?这个b2BodyDef会动画,但我现在不担心这个。 有谁知道我该怎么做?

谢谢!

回答

1

有一个很好的教程描述如何做到这一点here

基本上你要做的就是创建一个侦听机构之间冲突的contactListener。确保您的精灵被标记,然后在联系人侦听器中加载碰撞的两个对象的精灵数据。通过检查标签,您可以识别出碰撞的精灵。

从那里你可以做任何事情,因为你有一个引用的精灵,身体和世界。例如,如上述示例中那样,移除砖块。

+0

由于我做了这个线程,我成功地将它添加到我的项目。但是我目前面临的问题是如何在一次碰撞中停止多次回调。你知道这是可能的吗? –

+0

对不起,延迟回复 - 希望它可以帮助别人......在contactListener的预分析方法中,您可以取消事件。所以你用标签去标记身体,然后取消事件。然后,当你遍历所有的身体,并更新他们的位置等...如果精灵被标记为被删除,你删除它。 – tustvold

+0

那就是我所做的事情,我只是在它碰撞后立即更改标记,然后碰撞if语句就不会再被调用了! –