Cocos2d-x   发布时间:2022-05-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了cocos2dx3.2开发 RPG《Flighting》(十)为角色加上血量条大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

一、前言

先说明一下,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

如有问题或指教,欢迎与我交流,谢谢。

大佬总结

以上是大佬教程为你收集整理的cocos2dx3.2开发 RPG《Flighting》(十)为角色加上血量条全部内容,希望文章能够帮你解决cocos2dx3.2开发 RPG《Flighting》(十)为角色加上血量条所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。