在一个简单的游戏中,一个角色有一个大约 15 帧的行走动画。基于加速度计的是速度在任一方向的变化。我希望动画相应地加速或减速。我意识到一旦动画被初始化,你就不能改变延迟速度,而是需要创建一个新的动画。但由于速度几乎不断变化,如果我不断重置动画,它总是会卡在同一帧上。
有没有办法找到动画当前所在的帧,停止它,然后创建一个具有相同帧但从上一个动画结束处开始的新动画?
否则有人知道如何实现动态变化的动画延迟时间吗?
编辑:
我已经尝试使用 CCSpeed 从 Learn Cocos2d 2 中的示例中执行此操作。这是代码:
CCRepeatForever *walkLeftRepeat = [CCRepeatForever actionWithAction:[CCAnimation animationWithSpriteFrames:walkLeftFrames]];
self.walkLeft = [CCSpeed actionWithAction:walkLeftRepeat speed:animationWalkingSpeed];
我收到以下警告:不兼容的指针类型将“CCRepeatForever *”发送到“CCActionInterval *”类型的参数
这是我所遵循的示例:
CCRepeatForever* repeat = [CCRepeatForever actionWithAction:rotateBy];
CCSpeed* speedAction = [CCSpeed actionWithAction:repeat speed:0.5f];
第二次编辑:
然后我尝试了这个:
CCAnimation *walkLeftRepeat = [CCAnimation animationWithSpriteFrames:walkLeftFrames];
CCAnimate *temp = [CCAnimate actionWithAnimation:walkLeftRepeat];
CCAnimate*temp2 = [CCRepeatForever actionWithAction:temp];
self.walkLeft = [CCSpeed actionWithAction:temp2 speed:animationWalkingSpeed];
[_guy runAction:_walkLeft];
最后编辑。通过添加动画延迟来解决它不显示的问题。
这不会给出任何错误,但没有任何反应。谢谢!