cocos2dx3.2开发 RPG《Flighting》(十)为角色加上血量条
发布时间:2020-12-14 20:03:12 所属栏目:百科 来源:网络整理
导读:一、前言 先说明一下,Role类其实是有很多属性的 protected:/*与战斗相关的数据*/int m_id;//idRole* m_attackTarget;Role** m_attackTargetPtr;//攻击目标Point m_desPoint;//目标位置ROLE_STAT en_stat;//当前状态FlightLayer* m_layer;//父控件int m_spee
一、前言 先说明一下,Role类其实是有很多属性的 protected: /*与战斗相关的数据*/ int m_id; //id Role* m_attackTarget; Role** m_attackTargetPtr;//攻击目标 Point m_desPoint;//目标位置 ROLE_STAT en_stat; //当前状态 FlightLayer* m_layer; //父控件 int m_speed; //移动速度 int m_initSpeed; int m_attackDistance; //攻击距离 int m_initAttackDistance; int m_hp;//生命值 int m_initHp; int m_atk;//攻击力 int m_initAtk; int m_defence;//防御力 int m_initDefence; ROLE_TYPE m_type;//角色类型:Monster Or Hero int m_atkHateValue;//攻击附带仇恨 bool m_isNaima;//是不是奶妈 std::string m_bulletImg;//子弹 int m_bulletSpeed;//子弹速度 int m_initBulletSpeed; double m_atkSpeed;//攻击速度 double m_initAtkSpeed; 每一个属性都有对应的get/set方法以后用到(例如攻击力,防御力,血量)的时候可能我不会提及,请大家原谅。
二、正文 血量条这个很基本,实现方法有很多种,我这里是调用ControlSlider这个控件 void Role::initHpSlider(){ m_hpSlider = ControlSlider::create("bloodbg.png","blood.png","sliderThumb.png"); m_hpSlider->setTouchEnabled(false); m_hpSlider->setMaximumValue(m_initHp); m_hpSlider->setMinimumValue(0); m_hpSlider->setValue(m_hp); m_hpSlider->setPosition(getHpSliderPos()); this->addChild(m_hpSlider); } Point Role::getHpSliderPos(){ return Point(0,0); }
在update函数里面检测HP的值,并且改变血量条 void Role::update_hp(){ if(m_hpSlider){ m_hpSlider->setValue(m_hp); m_hpSlider->setPosition(getHpSliderPos()); } } 当我们的injured函数被触发的时候(被攻击),m_hp的值会改变,自然的,血量条也随之改变。 这里的getHpSliderPos函数的作用是被子类重写,并且设置血量条的位置,应为骨骼动画资源的大小不一(可能Boss体积就大一点),性质跟之前的offset_x,offset_y一样也是用于调整一下位置的。
我的csdn地址:http://blog.csdn.net/hezijian22 邮箱地址:578690286@qq.com 如有问题或指教,欢迎与我交流,谢谢。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |