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