cocos2d-x 3.2 |跑酷游戏:角色动画

cocos2d-x 3.2 |跑酷游戏:角色动画
前情提要:今日分享一篇跑酷类游戏中,角色动画的播放方式。

分析:跑酷类游戏,制作方法上都是背景移动,角色不动(原地播放动画帧),特殊事件才会触发角色的位移。(比如关底)
   这里我们用一个集合保存角色的所有动画帧,设定它的初始位置、锚点、缩放值、以及角色的Tag标示、确定他得初始属性。
   这里动画部分用到了cocos2d-x本身自带的runAction方法,runAction继承自Node。下面是一段runAction的的源码:
Action * Node::runAction(Action* action)
{
    CCASSERT( action != nullptr, "Argument must be non-nil");
    _actionManager->addAction(action, this, !_running);
    return action;
}

在类中实现动画播放方法 如下:
/加入人物动画
    Vector<SpriteFrame *> allf;
    for (int i=1; i<9; i++)
    {
//1.利用字符串工具实现多张动画的播放 
//2.Rect范围:x,y,width,height
    auto sf=SpriteFrame::create(StringUtils::format("pao_%d.png",i), Rect(0,0,150,150));
//从集合中弹出
        allf.pushBack(sf);
    }
    //动画
    auto an =Animation::createWithSpriteFrames(allf);
    //延迟播放毫秒
    an->setDelayPerUnit(0.1);
    //动画树
    auto ani=Animate::create(an);
    //创建一个精灵
    auto Sp=Sprite::create();
    //设定标示符
    Sp->setTag(110);
    //精灵动作来自Animate 并永远循环播放
    Sp->runAction(RepeatForever::create(ani));
    //将动画添加到当前场景
    this->addChild(Sp);
    //坐标
    Sp->setPosition(100,50);
    //缩放值
    Sp->setScale(1);
    //实时更新
    this->scheduleUpdate();
    //Z轴
    Sp->setLocalZOrder(100);
    //锚点
    Sp->setAnchorPoint(Vec2(0.5, 0.3));


总结:角色播放动画的方式,后期涉及到得角色与场景碰撞、与道具碰撞等另开贴记录。

你可能感兴趣的:(游戏,移动,animation,人物)