swift - SpriteKit 动画之间的正确过渡

标签 swift xcode sprite-kit

我有一个空闲播放器动画,我想在一些动画之间进行平滑过渡。空闲动画是默认动画,我希望能够从该过渡切换到另一种状态(比如说战斗),然后再回到空闲状态。空闲角色动画的代码目前是这样的:

self.addChild(playerAnimation)
playerAnimation.runAction(SKAction.repeatActionForever(
            SKAction.animateWithTextures(playerAnimationManager.idleManAnimation.textureArray, timePerFrame: 0.1)))

现在,这计划暂时持续下去,但我需要拦截它并在其上添加一个新动画(这是同一个角色,处于新状态)。我在想我应该停止空闲动画,切换到新动画,然后在完成后回到空闲状态,但我不相信这是链接动画的最佳方式,而且我还没有真正找到一个很好的资源来解释如何去做吧。

有什么建议吗?谢谢!

最佳答案

根据您的纹理数组有多短,您也许能够做到这一点。

我将尝试在没有代码的情况下进行解释,看看我如何使用 objective C 而您如何使用 Swift

  1. 首先在这个类文件中创建一个可以被任何子程序调用的属性或变量。它应该是 Boolean 并且应该设置为 NO。您可以将其称为 idleFlag

  2. 接下来制作一个将动画更改为战斗模式的方法。此更改将通过删除闲置动画并将其替换为战斗动画来实现。此方法还将 idleFlag 设置为 NO。让我们调用方法“beginFightAnim

  3. 最后,在您的 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/

相关文章:

ios - gpus_ReturnGuiltyForHardwareRestart

ios - 随机 SpriteKit 纹理切换语句无法正常工作

ios - 使用SpriteKit节点纹理中的视频在SceneKit中显示3D模型

swift SpriteKit : Flipping parent sprite randomizes child nodes horizontal alignment

ios - 在 iOS 中阅读网站

ios - Swift 2 在更改页面之前检查

ios - 如何在SCENEKIT中绘制无限长的线?

ios - 在 Swift 项目中处理 API URL

ios - 我有一个库文件(.a)。我怎样才能从这里向后获取一些伪源代码?

objective-c - 自定义 NSMenu 项