該章節主要介紹遊戲中的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);
}
}
}