该章节主要介绍游戏中的BOSS
我主要制作了两个BOSS,分别为第6关的神灯和11关的大猩猩
首先,是BOSS的入场动画,例如第六关墙壁倒塌的效果。我们注意到BaseMap中有个虚函数virtual void waveEvent();,在BaseMap的addWaves函数最后加入waveEvent(),每个地图复写这个函数,根据各个地图写上自己的动画即可。其他关也有类似的动画。
Boss也是继承与Monster基类,除了基本属性略强外,拥有技能。添加一个定时器,来设置不同时间后释放技能。
两个BOSS都有一个同样的技能就是召唤小弟,下面介绍这个技能的实现方式。
在创建BOSS时,除了传入BOSS自身的路线外,将其他所有路线也传入BOSS,作为其小弟的路线,当释放技能时,根据BOSS目前所在位置计算出小弟的出生位置,每个path都添加若干小弟,别忘了在GameMangager加入。
void Boss_Canibal::addSons()
{
for(unsigned int i =0;i<sonPath.size();i++){
for(unsigned int j =1;j<sonPath.at(i).size();j++){
std::vector<Point> points = sonPath.at(i).at(j);
auto canibalOffspring = CanibalOffspring::createMonster(points,pointCounter);
this->getParent()->addChild(canibalOffspring);
GameManager::getInstance()->monsterVector.pushBack(canibalOffspring);
}
}
}