cocos2d-x中的碰撞检测

Collision Detection in cocos2d-x

本文关键字:碰撞检测 cocos2d-x      更新时间:2023-10-16

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

   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();
}
}

谢谢。

你可以使用

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

和check

if(man-> intersectsRect(obs1)
{
// Do Something 
}

谢谢

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

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

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

在这两种情况下,你都必须定义游戏世界的规则(如重力矢量、边界等),并为你想要遵循物理规则的游戏元素定义对象(如质量、尺寸等)。然后你可以将这些对象绑定到精灵上,这样精灵的位置和角度就会根据物理对象进行更新。还可以绑定两个对象碰撞时调用的回调。