微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Cocos3.4 横版游戏制作-《KillBear》-添加血条 攻击按键

转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。
资源为网上寻找的,仅研究学习用,若是侵犯版权请通知本人整改。

上一篇: Cocos3.4 横版游戏制作-《KillBear》-边缘检测 地图滚动
上一篇中,我们实现了边缘检测+地图滚动 .
本篇中,我们在OperateLayer.cpp加入一个攻击按钮,实现Hero攻击
并在左上角加入一个血条显示

开发环境

win64 : vs2010
Cocos2d-x v3.4Final
TexturePackerGUI
MapEdit

代码构建A

Operate

OperateLayer

  • .h

加入

void attackButton(Ref* pSender);
  • .cpp

init中

auto visibleSize = Director::getInstance()->getVisibleSize();
        //创造attackItem图标
        auto attackItem = MenuItemImage::create("attackbuttonnormal.png","attackbuttonSelected.png",CC_CALLBACK_1(OperateLayer::attackButton,this));

        //图标大小
        attackItem->setScale(1.5);
        //attackItem->setContentSize(Size(50,50));

        //图标放在
        attackItem->setPosition(visibleSize.width - attackItem->getContentSize().width/2-50,attackItem->getContentSize().height/2+20);

        auto menu = Menu::create(attackItem,NULL);
        menu->setPosition(Vec2::ZERO);
        this->addChild(menu,100);
void OperateLayer::attackButton(Ref* pSender)
{
    global->hero->onAttack(1);
}

效果A

之后在左上角一个血条显示,将其添加进StateLayer

代码构建

State

StateLayer

  • .h
#include "HpShow.h"
  • .cpp

init

auto Hp = HpShow::create();
        this->addChild(Hp);

新建一个HpShow

HpShow

  • .h
#ifndef _HP_SHOW_H_
#define _HP_SHOW_H_
#include "cocos2d.h"
#include "Global.h"
USING_NS_CC;

class HpShow : public Node
{
public:
    HpShow();
    ~HpShow();
    virtual bool init();
    void update(float dt);
    CREATE_FUNC(HpShow);
private:
    Progresstimer* m_preal;
};

#endif
  • .cpp
#include "HpShow.h"

HpShow::HpShow()
{
}
HpShow::~HpShow()
{
}
bool HpShow::init()
{
    bool ret = false;
    do {
        CC_BREAK_IF( !Node::init());
        auto visibleSize =  Director::getInstance()->getVisibleSize();

        //创建血条背景
        Sprite* HeroHp = Sprite::create("bloodBg.png");
        HeroHp->setPosition(HeroHp->getContentSize().width/2,visibleSize.height-HeroHp->getContentSize().height/2);
        this->addChild(HeroHp);

        //一个Progresstime类,能够设置其状态,百分比,显示类型等
        m_preal = Progresstimer::create(Sprite::create("blood.png"));
        m_preal->setType(Progresstimer::Type::BAR);
        m_preal->setMidpoint(Point(0,0.5));     
        m_preal->setBarChangeRate(Point(1.0,0));   
        m_preal->setPosition(HeroHp->getContentSize()/2);
        m_preal->setPercentage(100);
        HeroHp->addChild(m_preal);

        this->scheduleUpdate();
        ret = true;
    } while(0);
    return ret;
}


void HpShow::update(float dt)
{
    //更新下血条状态
    m_preal->setPercentage((float)global->hero->getCurtLifeValue()/global->hero->getSumLifeValue()*100);
}

结果B

结语

本篇添加一个血条和攻击按键.使得我么的Hero可以播放攻击动画 每一帧都会更新血量,刷新血条状态,显示当前血量 下一篇实现敌人的加入,并为其添加一些简单的AI.

原文地址:https://www.jb51.cc/cocos2dx/344424.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐