【发布时间】:2012-12-24 10:35:29
【问题描述】:
在一个简单的游戏中,一个角色有一个大约 15 帧的行走动画。基于加速度计的是速度在任一方向的变化。我希望动画相应地加速或减速。我意识到一旦动画被初始化,你就不能改变延迟速度,而是需要创建一个新的动画。但是由于速度几乎是不断变化的,如果我一直重置动画,它总是会卡在同一帧上。
有没有办法找到动画当前所在的帧,停止它,然后创建一个具有相同帧但从上一个动画结束处开始的新动画?
否则有人知道如何实现动态变化的动画延迟时间吗?
编辑:
我在 Learn Cocos2d 2 中的一个示例中尝试使用 CCSpeed 来执行此操作。代码如下:
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];
最终编辑。通过添加动画延迟来解决它不显示的问题。
这不会给出任何错误,但没有任何反应。 谢谢!
【问题讨论】:
标签: iphone animation cocos2d-iphone