一、前言
先补充一下,英雄的死亡
英雄的死亡,我们要在FlightLayer对m_rolesArray进行清除 *** 作
voID FlightLayer::cleanNullPtrInArray(){ auto it = m_rolesArray.begin(); while(it != m_rolesArray.end()){ if((**it)->getRoleStat() == Role::RolE_DIE){ (**it)->removeFromParentAndCleanup(true); **it = nullptr; it = m_rolesArray.erase(it); }else{ ++it; } }}<strong></strong>
好了,前面我们讲得移动,攻击,都是对角色类来讲的。现在为了开展后面的,我们是时候对角色分成两类了,英雄和怪物。
二、正文
英雄类Hero继承Role类,与Role相比,不同的地方就是Hero能够使用技能,而且有技能效果,还有initWithMessage方法就是用HeroMessage来初始化自身的一些属性罢了。
class Hero : public Role{frIEnd class Skill;public: static Hero* create(const std::string& name,FlightLayer* layer); static Hero* create(const std::string& name,FlightLayer* layer,int offsetX,int offsetY); voID initHero(); voID initWithMessage(const HeroMessage& msg); virtual Point getHpSlIDerPos(); inline voID setSkill(SkillMessage s){m_skill = s;} inline SkillMessage getSkill(){return m_skill;} virtual voID skill(); voID runStateEffect(int ID); //是否在大招状态 inline bool isSkilling(){return skilling;} //是否能使用大招 inline bool isCanSkill(){return canUseSkill;} //恢复状态 voID recover();private: virtual voID update(float dt); voID update_state(float dt); voID update_skill_cd(float dt);private: SkillMessage m_skill; bool skilling; bool canUseSkill; float m_state_lastTime; float skillCD; Sprite* m_state_sprite;};关于技能和技能效果不打算在这里开展。以后会单独有一节。
怪物类Monster也是继承Role类,与Role相比,Monster有一个仇恨值数组,管理对攻击过自己的英雄的仇恨值,默认攻击仇恨值最高的那个英雄,当怪物在没有攻击对象的时候,会自动随机抽取一个英雄攻击。
既然我们已经有了分类,那么为了逻辑判断 *** 作容易点(例如英雄不能打英雄,怪物不能打怪物之类的),我们可以在父类(Role)增加一个枚举和一个标识是什么角色类型的变量,如下
class Role{public:enum RolE_TYPE{ RolE_TYPE_NulL,RolE_TYPE_HERO,RolE_TYPE_MONSTER };private: RolE_TYPE m_type;//角色类型:Monster Or Hero}voID Hero::initHero(){ setControlable(true); m_type = Role::RolE_TYPE_HERO;}voID Monster::initMonster(){ m_type = Role::RolE_TYPE_MONSTER; m_controlable = false;//怪物不可控制}
大概分类就是这样子吧。
我的csdn地址:http://blog.csdn.net/hezijian22
邮箱地址:578690286@qq.com
如有问题或指教,欢迎与我交流,谢谢。
总结以上是内存溢出为你收集整理的cocos2dx3.2开发 RPG《Flighting》(十一)角色分类——英雄与怪物全部内容,希望文章能够帮你解决cocos2dx3.2开发 RPG《Flighting》(十一)角色分类——英雄与怪物所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)