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));
总结:角色播放动画的方式,后期涉及到得角色与场景碰撞、与道具碰撞等另开贴记录。