我在这也不在解释了,就是实现一个血量条,这个就是通过代码实现,我不知道有什么软件还能实现此功能,如果有那个大神知道的话给我说说啊 ,谢谢啊 !
一下代码仅供参考,如有不对请指教,谢谢!
注释都写在代码中,如果有些方法还是不明白就去看源码,或者百度。
//如果使用的不是plist文件,就直接create就行,背景图片 hpBgSprite = Sprite::createWithSpriteFrameName("hpBg1.png"); hpBgSprite->setPosition(Point(sprite->getContentSize().width / 2,sprite->getContentSize().height )); sprite->addChild(hpBgSprite); //这个是血量条的图片 hpBar = CCProgressTimer::create(Sprite::createWithSpriteFrameName("hp1.png")); //设置血量条的类型是条型的还是圆型的 hpBar->setType(ProgressTimer::Type::BAR); //设置位置 hpBar->setMidpoint(Point(0,0.5f)); //设置血量是从那开始时从左还是从右,现在是从左向右 hpBar->setBarChangeRate(Point(1,0)); //设置血量条的初始值 hpBar->setPercentage(hpPercentage); hpBar->setPosition(Point(hpBgSprite->getContentSize().width / 2,hpBgSprite->getContentSize().height / 3 * 2 )); hpBgSprite->addChild(hpBar);
下面的记录比较乱,由于代码是公司的,所以请谅解。
今天要不出一点,就是你添加过血量条后,肯定会要去根据攻击,还进行设置血量的显示,在这我将大致思路说一下,代码我就不贴出来了。
我们就那一个怪物的血量条为例,当怪物收到攻击是血量就会减少,我们需要拿到怪物的血量(我们需要给他两个变量,一个是当前,还有就是一个总的血量),
伪代码如下:
currentHp = monsterHp;
MaxHp = monsterHp;
当怪物受到攻击时,
currentHp -= Attack;
在给怪物血量一个set和get方法,
setCurrentHp(currentHp);
那到血量条的值(一般都设置为100)
intoff = 100/MaxHp;
最后每受到攻击一次血量就减少slow
int slow = off*Attack;
最后将值给ProgressTimer的setPercentage
原文链接:https://www.f2er.com/cocos2dx/346079.html