cocos2d-x中的碰撞检测

时间:2014-05-08 05:27:16

标签: c++ xcode cocos2d-x

我是cocos2d-x的初学者,我正在使用xcode中的cocos2d-x开发游戏。在我的游戏中,我添加了一个名为man的玩家精灵和一个名为obs1的障碍精灵。现在我想互相碰撞。为此,我使用以下代码但在运行时进入Playscene时,它在getpositionX和getpositionY中显示一些错误。我在我的头文件中将kman和kobs1声明为枚举。请帮我解决这个问题。

   schedule(schedule_selector(PlayScene::update));


 void PlayScene::update(float dt)
{
CCSprite *man = (CCSprite*)getChildByTag(kman);
CCSprite *obs1 = (CCSprite*)getChildByTag(kobs1);
CCRect manRect   = CCRectMake(man->getPositionX(),man->getPositionY(),6,1);
CCRect obs1Rect     = CCRectMake(obs1->getPositionX(),obs1->getPositionY(),6,1);

if(manRect.intersectsRect(obs1Rect))
{
    CCDirector::sharedDirector()->end();

}

}

感谢。

2 个答案:

答案 0 :(得分:3)

您可以使用

man->getBoundingBox() (Return a Rect)
obs1->getBoundingBox() (Return another Rectangle

并检查

if(man-> intersectsRect(obs1)
{

// Do Something 
}

由于

答案 1 :(得分:0)

为什么不利用COCOS2D(Chipmunk或Box2D)中提供的两个物理引擎之一

http://chipmunk-physics.net/release/ChipmunkLatest-Docs/

http://www.iforce2d.net/b2dtut/collision-callbacks

在这两种情况下,您都必须根据物理规则(即质量,尺寸等)定义您的世界规则(即重力矢量,边界等)和游戏中每个元素的对象。 )。然后,您可以将这些对象绑定到精灵,以便根据物理对象更新精灵位置和角度。您还可以绑定在两个对象发生冲突时调用的回调。