【问题标题】:Start/Stop a sprite animation from/on a specific frame in Spritekit从 Spritekit 中的特定帧开始/停止精灵动画
【发布时间】:2017-05-03 07:55:36
【问题描述】:

​我有一个 30 帧的精灵动画,其中 6 帧是关键帧,其余的是从关键帧到关键帧的过渡。

我正在尝试弄清楚如何执行以下操作:

  • 当按下按钮时,精灵开始动画。动画将至少运行一次,然后在随机选择的关键帧上停止动画。

  • 当再次按下按钮时,动画将从最后选择的关键帧开始并运行 1 个完整周期,然后在随机选择的关键帧处再次停止。

我发现了一个类似的问题here,但这是在 2014 年提出的。Swift 和 Spritekit 在 3 年内的变化是否足以使其成为可能?

编辑: @亚历山德罗·奥纳诺 我试过这个:

var roll1Textures = ["Roll1Motion0", "Roll1Motion1", "Roll1Motion2", "Roll1Motion3", "Roll1Motion4", "Roll1Motion5", "Roll1Motion6", "Roll1Motion7", "Roll1Motion8", "Roll1Motion9", "Roll1Motion10", "Roll1Motion11", "Roll1Motion12", "Roll1Motion13", "Roll1Motion14", "Roll1Motion15", "Roll1Motion16", "Roll1Motion17", "Roll1Motion18", "Roll1Motion19", "Roll1Motion20", "Roll1Motion21", "Roll1Motion22", "Roll1Motion23", "Roll1Motion24", "Roll1Motion25", "Roll1Motion26", "Roll1Motion27", "Roll1Motion28", "Roll1Motion29"]

let roll1Animation = SKAction.animate(with: Array(roll1Textures[0...5]), timePerFrame: 0.06, resize:false, restore:false)

但我收到一条错误消息:无法在属性初始化程序中使用实例成员“roll1Textures”;属性初始化程序在 'self' 可用之前运行。

我是如何以错误的方式实现您的代码的?

【问题讨论】:

  • 据我所知,SpriteKit 中的这个特定问题没有任何改变。
  • 我想说只是创建一个 customAction 来处理不同的状态

标签: swift3 sprite-kit xcode8


【解决方案1】:

我不知道它是否对你的游戏有用,但现在在 Swift 中你也可以在一行中完成:

let animation = SKAction.animate(with: Array(textures[0...5]), timePerFrame: 0.06, resize:false, restore:false)

换句话说,您可以创建一个由您的特定范围组成的数组切片,然后使用Array重新创建纹理数组

【讨论】:

  • 我的问题是想发表评论。请参阅我的问题中的“编辑”。
  • 你应该做一个 SKTexture 数组,而不是你做的字符串数组
猜你喜欢
  • 2017-06-09
  • 1970-01-01
  • 2011-11-15
  • 2022-12-07
  • 2021-01-07
  • 2020-03-11
  • 1970-01-01
  • 2019-03-10
  • 1970-01-01
相关资源
最近更新 更多