【问题标题】:Sprite-Kit animations — using SKTextureFilteringMode.nearestSprite-Kit 动画——使用 SKTextureFilteringMode.nearest
【发布时间】:2022-06-11 04:16:39
【问题描述】:

我正在尝试将SKTextureFilteringMode.nearest 应用于我动画中的所有帧。

以前,当我使用非动画精灵时,以下方法有效:

super.init(texture: texture, color: .clear, size: playerSize)
self.texture?.filteringMode = SKTextureFilteringMode.nearest;

现在我添加了动画帧(见下面的完整代码),这不起作用——精灵是模糊的。我不知道如何将此过滤模式添加到所有帧。

class Player: SKSpriteNode {
    
    private var playerAtlas: SKTextureAtlas {
        return SKTextureAtlas(named: "Player")
    }
    
    private var playerRunTextures: [SKTexture] {
        return [
            playerAtlas.textureNamed("run1"),
            playerAtlas.textureNamed("run2"),
            playerAtlas.textureNamed("run3"),
            playerAtlas.textureNamed("run4")
        ]
    }
    
    func startRunAnimation() {
        let runAnimation = SKAction.animate(with: playerRunTextures, timePerFrame: 0.1)
        self.run(SKAction.repeatForever(runAnimation), withKey: "playerRunAnimation")
    }
    
    
    init() {
        let texture = SKTexture(imageNamed: "player")
        let playerSize = CGSize(width: 30, height: 50)
        super.init(texture: texture, color: .clear, size: playerSize)
        self.texture?.filteringMode = SKTextureFilteringMode.nearest;
        self.position = CGPoint(x: 100, y: 400)
        self.startRunAnimation()
    }

...

【问题讨论】:

    标签: swift sprite-kit


    【解决方案1】:

    在创建精灵动画数组时为每个纹理设置SKTextureFilteringMode

    private var playerRunTextures: [SKTexture] {
        let spritesheet = [
            "run1",
            "run2",
            "run3",
            "run4"
        ]
        
        return spritesheet.map { name in
            let t1 = playerAtlas.textureNamed(name)
            t1.filteringMode = .nearest //<--- for each texture in the atlas
            return t1
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多