swift - Swift 4 中的 Sprite Kit 动画和纹理图集

标签 swift sprite-kit skspritenode sktextureatlas

目前正在开发一个需要通过图像数组制作一些动画的应用程序。我已经在网上进行了大量关于如何解决我的问题的研究,但无法遇到 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))
    }

最佳答案

动画 Action 放在update中,每帧执行一次。因此,如果游戏以 60 FPS 运行,则 update 一秒内会被调用 60 次。这意味着每第二个 person 都会获得需要运行的 60 个新的 myAnimation 操作。

要解决此问题,请考虑将动画操作放置在代码中的其他位置,例如将 person 添加到场景后。由于这是一个 repeatForever 操作,因此动画将按您的预期运行,直到该操作从节点中删除,或者节点从场景中删除。

希望这有帮助!

关于swift - Swift 4 中的 Sprite Kit 动画和纹理图集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46230946/

相关文章:

ios - 如何降低重力对单个SKSpriteNode的影响

ios - UNNotificationCategory 子类初始化问题

ios - 如何在 xib View Controller 中添加图像(swift3)

swift - iOS13 UIAlertController 具有自定义 View 和首选样式作为操作表灰度所有颜色

sprite-kit - spritekit如何在两个不同节点上转换两个SKAction

Swift 概述 SKLabelNodes

swift - 如何使用 SpriteKit 与已创建的 SKSpriteNode 创建碰撞?

ios - CABasicAnimation 有时有效,有时失败

ios - Swift - SKAction 序列有问题

swift - 访问其他函数中本地定义的变量 - Swift