防御塔方面,还有炮塔的两个高级塔,例如地震塔,机器人塔。地震塔就是周围敌人全部减少血量,机器人塔就是一个士兵类,炮塔升级成士兵类,实现方式和士兵类似。
法师塔方面,死亡先知塔可以召唤龙卷风,龙卷风是一个子d类,生成后自行寻找最近敌人并且移动到敌人处,对敌人造成伤害。DK塔可以召唤一个死亡骑士。
还有一些其方面没有介绍,结合该系列其他防御塔、士兵、敌人的思路即可实现。
动画管理类
负责创建动画
例如法师塔上面的法师的动画
AnimationCache::getInstance()->addAnimation(createAnimation("mage_shooter_00%02d.png",17,29,0.04f,"mage_shooter_0001.png"),"mage_shoot_up");
mage_shoot_up是创建的动画名,在载入地图时将动画一一创建,使用时候根据创建的动画名即可使用
shooter->runAction(Animate::create(AnimationCache::getInstance()->getAnimation("mage_shoot_up")));
createAnimation是创建动画函数,根据传入的贴图名(在pList中)、开始图片、结束图片等创建真动画
Animation* MyAnimation::createAnimation(const char* prefixname,int start,int end,float delay){ Vector<SpriteFrame*> animFrames; for (int i = start; i <= end; i++) { auto frame = SpriteFrameCache::getInstance()->getSpriteFrameByname(String::createWithFormat(prefixname,i)->getCString()); if(frame!=nullptr) animFrames.pushBack(frame); } return Animation::createWithSpriteFrames(animFrames,delay);}
负责播放音效
检测音效是否开启,若开启、播放
voID SoundManager::playEfreetiLaugh(){ if(cheakEffectState()) SimpleAudioEngine::getInstance()->playEffect("sound/boss_efreeti_evillaugh.wav");}
进度管理,敌人数组
单例
GameManager* GameManager::getInstance(){ if (instance == NulL) instance = new GameManager(); return instance;}
3个进度选项,根据选择,生成tag,在使用xml保存进度时使用使用
voID GameManager::setInstance(int tag){ SLOTNUM = tag; sprintf(SLOTX_ISEXIT,"Slot%d",tag); sprintf(LEVELX_ISDOWN,tag); strcat(LEVELX_ISDOWN,"_Level_%d"); sprintf(LEVELX_STARNUM,tag); strcat(LEVELX_STARNUM,"_Level_%d_star");..........................}
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
该系列到此为止终结了~感谢阅读
如有疑问或者不对的地方,欢迎交流
总结以上是内存溢出为你收集整理的[Cocos2d塔防游戏开发]Cocos2dx-3.X完成塔防游戏《王国保卫战》--其他全部内容,希望文章能够帮你解决[Cocos2d塔防游戏开发]Cocos2dx-3.X完成塔防游戏《王国保卫战》--其他所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)