Swift 4 中的 Sprite Kit 动画和纹理图集
Sprite Kit Animations and Texture Atlases in Swift 4
目前正在开发一个应用程序,该应用程序需要通过一组图像制作一些动画。我在网上做了很多关于如何解决我的问题的研究,但无法 运行 为 Swift 4 做任何事情。下面是我的代码,当我 运行 应用程序,但根本没有动画。一切看起来都很好,我没有发现我的代码有问题,但也许你们可以提供帮助。进阶欣赏!
let atlas = SKTextureAtlas(named: “mypic”)
var TextureArray = [SKTexture]()
var person = SKSpriteNode()
override func didMove(to view: SKView) {
person = SKSpriteNode(imageNamed: "red_1.png")
person.size = CGSize(width: 150, height: 129)
person.position = CGPoint(x: 0, y: 0)
person = SKSpriteNode(imageNamed: atlas.textureNames[0])
for i in 1...atlas.textureNames.count {
let Name = "red_\(i).png"
TextureArray.append(SKTexture(imageNamed: Name))
}
self.addChild(person)
}
override func update(_ currentTime: TimeInterval) {
let myAnimation = SKAction.animate(with: TextureArray, timePerFrame: 0.1)
person.run(SKAction.repeatForever(myAnimation))
}
动画动作放在update
,每帧执行一次。因此,如果游戏 运行 以 60 FPS 的速度运行,则 update
在一秒钟内被调用 60 次。这意味着每秒 person
获得 60 个新的 myAnimation
动作,它需要 运行.
要解决此问题,请考虑将动画动作放在代码中的其他位置,例如在将 person
添加到场景之后。由于这是一个 repeatForever
动作,动画将 运行 按照您的预期进行,直到该动作从节点中删除,或者节点从场景中删除。
希望对您有所帮助!
目前正在开发一个应用程序,该应用程序需要通过一组图像制作一些动画。我在网上做了很多关于如何解决我的问题的研究,但无法 运行 为 Swift 4 做任何事情。下面是我的代码,当我 运行 应用程序,但根本没有动画。一切看起来都很好,我没有发现我的代码有问题,但也许你们可以提供帮助。进阶欣赏!
let atlas = SKTextureAtlas(named: “mypic”)
var TextureArray = [SKTexture]()
var person = SKSpriteNode()
override func didMove(to view: SKView) {
person = SKSpriteNode(imageNamed: "red_1.png")
person.size = CGSize(width: 150, height: 129)
person.position = CGPoint(x: 0, y: 0)
person = SKSpriteNode(imageNamed: atlas.textureNames[0])
for i in 1...atlas.textureNames.count {
let Name = "red_\(i).png"
TextureArray.append(SKTexture(imageNamed: Name))
}
self.addChild(person)
}
override func update(_ currentTime: TimeInterval) {
let myAnimation = SKAction.animate(with: TextureArray, timePerFrame: 0.1)
person.run(SKAction.repeatForever(myAnimation))
}
动画动作放在update
,每帧执行一次。因此,如果游戏 运行 以 60 FPS 的速度运行,则 update
在一秒钟内被调用 60 次。这意味着每秒 person
获得 60 个新的 myAnimation
动作,它需要 运行.
要解决此问题,请考虑将动画动作放在代码中的其他位置,例如在将 person
添加到场景之后。由于这是一个 repeatForever
动作,动画将 运行 按照您的预期进行,直到该动作从节点中删除,或者节点从场景中删除。
希望对您有所帮助!