void GameLayer::checkIsCollide() { Enemy *enemy; Bullet *bullet; CCObject *it; CCObject *jt; CCArray* toRemoveEnemy = new CCArray(); CCArray* toRemoveEnemyBullet = new CCArray(); CCArray* toRemovePlayerBullet = new CCArray(); int exploveCount = 0; CCARRAY_FOREACH(GV::getInstance()->enemies, it) { enemy = dynamic_cast<Enemy *>(it); CCARRAY_FOREACH(GV::getInstance()->player_bullets, jt) { bullet = dynamic_cast<Bullet *>(jt); if (bullet->collideRect().intersectsRect(enemy->collideRect())) { CCSprite *explode = CCSprite::create("hit.jpg"); toRemoveExplove->addObject(explode); ccBlendFunc cbl = {GL_SRC_ALPHA, GL_ONE}; explode->setBlendFunc(cbl); explode->setPosition(enemy->getPosition()); explode->setRotation(CCRANDOM_0_1() * 360); explode->setScale(0.75 * SCALE_FACTOR); this->addChild(explode, 9999); explode->runAction(CCScaleBy::create(2, 2, 2)); explode->runAction(CCFadeOut::create(2)); //explode->runAction(CCSequence::create(CCFadeOut::create(2), // CCCallFunc::create(this, callfunc_selector(GameLayer::removeExplove)))); this->removeChild(bullet, true); this->removeChild(enemy, true); toRemovePlayerBullet->addObject(bullet); toRemoveEnemy->addObject(enemy); exploveCount++; } if (bullet->getPosition().y >= winSize.height || bullet->getPosition().y <= 0) { this->removeChild(bullet, true); toRemovePlayerBullet->addObject(bullet); } }