0

我有一个“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(3帧)
  • 1-空闲2(6帧)
  • 2 跳(12 帧)
  • 3 步(12 帧)

现在,我只需要能够让角色处于空闲状态(动画 0 和 1 之间的随机时间),并且每当触摸时,跳跃动画都会完成一次,最后空闲再次开始......

稍后我将解决行走动画。

提前致谢!

4

1 回答 1

1

我建议schedule定期运行您的idle逻辑的方法,例如这样。-

this->schedule(schedule_selector(YourGameClass::idleLogic), FREQUENCY_IN_SECONDS);

在您的idleLogic方法中,您可以检查您的角色是否没有运行或跳跃,如果是,index则为您的空闲动画数组随机获取一个,然后运行_animation[index]。跟踪您的角色停止的时间也是一个好主意,这样您就不会运行任何空闲动画,除非iddleTime >= MIN_IDLE_TIME

希望能帮助到你。

于 2013-08-01T16:45:15.900 回答