我有一个“GameCharacter”类,我在游戏中为主角添加了一个精灵,我正确加载了帧和动画。我可以通过单次触摸或滑动手势在动画之间切换。现在我可以在动画之间轮换。
在我的场景触摸功能中,我有这个:
_mychar->RunAnimation(id);
其中id是动画的ID,只是每次触摸都会改变的整数。
方法的工作原理如下:
void GameCharacter::RunAnimation(int a){
_sprite->stopAllActions();
if(a<_animation.size() && a>=0){
_sprite->runAction( CCRepeatForever::create(_animation[a]));
}
}
_animation[]
只是一个保留CCAnimate*
个对象的向量(我在以后销毁GameCharacter时会释放它们)。
我有2个空闲动画,我想在它们之间随机切换,例如,我想要“排队”第一个动画3到5次,第二个动画1到2次,并且像这样永远重复...也,我想打断这个“无限随机空闲动画”,触摸使角色运行另一个动画直到它结束(例如一个跳跃动画),当它结束时,只需进入空闲动画。我不知道我是否解释得很好,希望你能理解我。
动画的ID为:
现在,我只需要能够让角色处于空闲状态(动画0和1之间的随机时间),每当触摸时,跳跃动画一次完成,最后再次空闲启动......
我稍后会解决步行动画。
提前致谢!
答案 0 :(得分:1)
我建议使用schedule
方法定期运行idle
逻辑,如下所示.-
this->schedule(schedule_selector(YourGameClass::idleLogic), FREQUENCY_IN_SECONDS);
在idleLogic
方法中,您可以检查自己的角色是否在跑步或跳跃,如果是,请为您的空闲动画阵列随机index
,然后运行_animation[index]
。跟踪角色被停止的时间也是一个好主意,这样你就不会运行任何空闲动画,除非iddleTime >= MIN_IDLE_TIME
希望它有所帮助。