如何解决SpriteKit - 动态改变动画速度
我是 SpriteKit 框架的新手,无法弄清楚如何执行以下操作:
在场景中间,我有一个精灵,我对其应用了 .animateWithTextures SKAction。现在我只想提高该动画的速度,或减少其持续时间以获得相同的效果。
我将 SKAction 作为我的 GameScene 类的一个属性,这样我就可以从任何地方访问它的属性,但改变它的速度和持续时间都不会影响动画。
我阅读了几个线程,最接近我的问题的是这个:
How to change duration of executed SpriteKit action
这是七年前的,没有一个答案对我有用。
这基本上是我所做的:
class GameScene: SKScene {
var thePlayer: SKSpriteNode = SKSpriteNode()
var playerAnimation: SKAction?
...
...
func setInitialAnimation() {
let walkAnimation = SKAction.repeatForever(SKAction(named: "PlayerWalk",duration: 1)!)
self.playerAnimation = walkAnimation
self.thePlayer.run(walkAnimation)
}
func changeAnimationDuration(to duration: CGFloat) {
self.playerAnimation?.duration = duration
}
}
当 setInitialAnimation 方法被调用时动画开始,但改变动作的持续时间没有效果。到目前为止唯一有效的是从玩家精灵中删除旧动作并运行一个新动作。
是否应该无法更改正在运行的 SKAction 的属性,还是某种即发即弃的机制?
解决方法
调整 timePerFrame 以获得正确的动画速度。
var frames = [SKTexture]()
for i in 1...10 {
frames.append(SKTexture(imageNamed: "YourTextureAnimationFrame\(i)"))
}
let animate = SKAction.animate(with: frames,timePerFrame: 0.025)
//timePerFrame setting the speed of the animation.
node.run(animate)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。