cocos2d-x 3.2 |分数效果的特殊表现方式

cocos2d-x 3.2 |游戏之 分数效果的特殊表现方式

游戏中,当玩家得分、吃道具、受伤害时、屏幕上总会提醒玩家当前自己的角色的状态
今天我们就通过cocos2d-x 给自己的角色来个这样的小效果,(这里以分数动画效果为例)

首先 需要准备一些素材:

.fnt 格式字体 一个【字体生成工具 点我】

png 对应字体贴图 一张【随字体工具生成】


其次 我们在相应的类中加入一个score 变量和 addscore的方法
    //分数变量
    int score;
    //分数方法
    void addScore(int r,int c,int n);//x y 值

接下来我们在游戏逻辑中加载字体并且初始化

    //加入分数
    auto labscore=Label::createWithBMFont("futura-48.fnt", "0");
    this->addChild(labscore,102);
    labscore->setTag(111);
    labscore->setPosition(Director::getInstance()->getWinSize().width-200,
                          Director::getInstance()->getWinSize().height/2);
    this->score=0;

下面把加分的方法实现一下

void HelloWorld::addScore(int x,int y,int s)//加分
{   auto labscore=(Label *)this->getChildByTag(111);
    score+=s;//加分
    labscore->setString(StringUtils::format("%d",score));
    auto adds=Label::createWithBMFont("futura-48.fnt",
                                      StringUtils::format("%d",s));
    this->addChild(adds);
    adds->setPosition(Vec2(x,y));
    //产生一个向上移动 并且又大到小 最后减淡消失数字的效果
    auto act1=Spawn::create(
                            //偏移
                            MoveBy::create(1, Vec2(0,50)),
                            //缩放
                            ScaleBy::create(1, 0.8),
                            //淡出
                            FadeTo::create(1, 0),
                            nullptr
                            );
    //队列
    auto act2=Sequence::create(act1,
                               CallFuncN::create([](Node * obj){
        obj->removeFromParentAndCleanup(true);
    }),
                               NULL);
    adds->runAction(act2);
}


这时我们已经实现了分数特效的表现方法,但具体到什么时候显示该效果,需要你自己加入道对应的逻辑判断中。

你可能感兴趣的:(动画,字体)