我有一个空闲播放器动画,我想在一些动画之间进行平滑过渡。空闲动画是默认动画,我希望能够从该过渡切换到另一种状态(比如说战斗),然后再回到空闲状态。空闲角色动画的代码目前是这样的:
self.addChild(playerAnimation)
playerAnimation.runAction(SKAction.repeatActionForever(
SKAction.animateWithTextures(playerAnimationManager.idleManAnimation.textureArray, timePerFrame: 0.1)))
现在,这计划暂时持续下去,但我需要拦截它并在其上添加一个新动画(这是同一个角色,处于新状态)。我在想我应该停止空闲动画,切换到新动画,然后在完成后回到空闲状态,但我不相信这是链接动画的最佳方式,而且我还没有真正找到一个很好的资源来解释如何去做吧。
有什么建议吗?谢谢!
最佳答案
根据您的纹理数组有多短,您也许能够做到这一点。
我将尝试在没有代码的情况下进行解释,看看我如何使用 objective C
而您如何使用 Swift
首先在这个类文件中创建一个可以被任何子程序调用的属性或变量。它应该是
Boolean
并且应该设置为NO
。您可以将其称为idleFlag
。接下来制作一个将动画更改为战斗模式的方法。此更改将通过删除闲置动画并将其替换为战斗动画来实现。此方法还将
idleFlag
设置为NO
。让我们调用方法“beginFightAnim
”- 最后,在您的
repeatActionForEver
空闲动画中,紧跟在您的animateWithTextures
动画之后,添加一个runBlock
动画。在此 block 中定义一个静态变量(将在 block 中一遍又一遍地调用)并将其递增 +1,添加一个看起来像这样的“if 语句”->if (my_static_var = = number_of_frames_in_texture_animations && idleFlag)
。并在“if 语句”中将静态变量设置为 0 并调用“beginFightAnim
”
在此之后,您只需将 idleFlag
设置为 YES
即可更改动画。
希望它有用!
如果您有任何问题,请在下方评论。
关于swift - SpriteKit 动画之间的正确过渡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38557040/