void SpriteSystem::enemyAttack(float dt) { for(uint i = 0; i < m_vEnemys.size(); i++) { BaseSprite* enemy = m_vEnemys.at(i); if(enemy->getSpriteState() != SPRITESTATE_DEAD)//如果没有死亡 { m_fAttackElapseTime[i] += dt;//更新时间 if (m_fAttackElapseTime[i] >= enemy->getSpConf().attackSpeed)//怪物达到攻击时间 { m_fAttackElapseTime[i] = 0;//计时归零 enemy->startAction(SPRITESTATE_ATTACK);//攻击动作 //判断弹道 if (enemy->getSpConf().type != SPRITETYPE_FRONT)//不是前排人物 { int magicId = enemy->getSpConf().magicGroup.magic1; // Magic* magic = m_vMagics.at(magicId);//这样多个英雄释放同一种技能时会重复addChild。 Magic* magic = Magic::create(m_magConf[magicId]); magic->startMagic(enemy, enemy->getTargetSp(), 0.8); magic->setFlippedX(true);//怪物攻击特效翻转 this->addChild(magic,2); } else { //随机攻击力 int randAttack = enemy->getSpConf().attackMin + rand()%(enemy->getSpConf().attackMax - enemy->getSpConf().attackMin); //更新生命值 enemy->getTargetSp()->setCurLife(enemy->getTargetSp()->getCurLife() - randAttack); } if(enemy->getTargetSp()->getCurLife() <= 0) { enemy->getTargetSp()->startAction(SPRITESTATE_DEAD);//没有移除 long index = m_vHeros.getIndex(enemy->getTargetSp()); m_itItem[index]->setEnabled(false);//禁用技能按钮 //改变攻击对象 setAttackTarget(); } if (enemy->getCurPower() < enemy->getSpConf().power) { enemy->setCurPower(enemy->getCurPower() + 1);//怒气+1 } else { // enemy->setIsMagic(true);//允许释放魔法 //直接释放技能(大招) enemy->startAction(SPRITESTATE_MAGIC); } } } } }
void SpriteSystem::itemCallback(Ref* pSender, int Num) { m_itItem[Num]->setEnabled(false); CCLOG("Num%d", Num); BaseSprite* hero = m_vHeros.at(Num); hero->setCurPower(0); hero->startAction(SPRITESTATE_MAGIC); //释放大招 Magic* bigMagic = Magic::create(m_magConf[hero->getSpConf().magicGroup.magic2]); bigMagic->startMagic(hero, hero->getMagicTargetSP(), 0); this->addChild(bigMagic,2); // this->startMagic(m_bsSp[Num], m_bsSp[Num]->getSpConf().magicGroup.magic2, 3); }