C++ 碰撞检测don';我不明白

C++ 碰撞检测don';我不明白,c++,cocos2d-x,C++,Cocos2d X,我试图发展两个精灵之间的碰撞,但我没有做到这一点。 我正在安排一个选择器来验证碰撞,另一个选择器来生成敌人的精灵。问题是它们没有碰撞 this->schedule(schedule_selector(HelloWorld::addenemy),2); this->schedule(schedule_selector(HelloWorld::collisionEnemy),2); 如上所述,我正在调度两个选择器,但如果我尝试调度值小于2(小于addEnemy timer)的Colli

我试图发展两个精灵之间的碰撞,但我没有做到这一点。 我正在安排一个选择器来验证碰撞,另一个选择器来生成敌人的精灵。问题是它们没有碰撞

this->schedule(schedule_selector(HelloWorld::addenemy),2);
this->schedule(schedule_selector(HelloWorld::collisionEnemy),2);
如上所述,我正在调度两个选择器,但如果我尝试调度值小于2(小于addEnemy timer)的CollisionDebust,则会得到一个错误:

libpng warning: iCCP: known incorrect sRGB profile
如果我将值设置为2或更多,则标识符不会得到冲突

这是碰撞敌人选择器:

void HelloWorld::collisionEnemy(float dt)
{
    CCSprite *player = (CCSprite*)getChildByTag(1);
    CCSprite *enemy = (CCSprite*)getChildByTag(3);

    CCRect playerRect = CCRectMake(
                                   player->getPosition().x - (player->getContentSize().width/2),
                                   player->getPosition().y - (player->getContentSize().height/2),
                                   player->getContentSize().width,
                                   player->getContentSize().height);

    CCRect miniBarrierRect = CCRectMake(
                                   enemy->getPosition().x - (enemy->getContentSize().width/2),
                                   enemy->getPosition().y - (enemy->getContentSize().height/2),
                                   enemy->getContentSize().width,
                                   enemy->getContentSize().height);

    if (playerRect.intersectsRect(enemyRect)) {

        CCLog("enemy Collision");

    } else {

        CCLog("not enemy Collision");
        }



    }

如果您想要真正的碰撞检测,我认为您应该查看Box2D

非常简单的碰撞检测:

cocos2d::Vector2 p = touch->getLocation();

cocos2d::Rect rect = _sprite->getBoundingBox();

if(rect.containsPoint(p))
{
    // collision
}
else
{
    // no collision
}
您的警告
libpng警告:iCCP:known不正确的sRGB配置文件就是这样。一些像Photoshop这样的工具嵌入了不好的ICCP块。如果你有ImageMagick,你可以很容易地摆脱警告

find-键入f-名称“*.png”-exec convert{}-strip{}\


在运行上述命令之前,请确保您知道从何处运行该命令。仅限于游戏资源所在的位置。始终首先备份。

是冲突检测不起作用还是调度?如果值大于2,则调度可能会比运行时间长,但不会发生冲突,因为它没有在正确的框架中运行。您是否尝试过
boundingbox()
?我主要使用它,并且它对我有效。我在名称空间“cocos2d”中没有得到名为“vector2”的类型。它已更改为
cocos1d::Vec2
请参阅: