sprite-kit - 为 SKSpriteNode 添加白色边框

标签 sprite-kit

我正在尝试向 Sprite 添加临时白色边框。为了实现这一目标,我正在构建另一个具有相同纹理但比第一个稍大的 Sprite 。然后,我将其颜色设置为白色,并将这个新 Sprite 绘制在其父级后面,将其淡出,最后将其删除。这是我的代码:

func blink() {
     if let currentTexture = self.texture {
        let biggerSprite = SKSpriteNode(texture: currentTexture)
        biggerSprite.colorBlendFactor = 1.0
        biggerSprite.color = SKColor.white
        biggerSprite.xScale *= 1.3
        biggerSprite.yScale *= 1.3
        biggerSprite.position = CGPoint.zero
        biggerSprite.name = "aura"
        biggerSprite.zPosition = zPositions.background
        addChild(biggerSprite)
        let fadeOut = SKAction.fadeOut(withDuration: 3)
        let remove = SKAction.removeFromParent()
        biggerSprite.run(SKAction.sequence([fadeOut, remove]))
    }
}

它有效,我可以看到边框淡出,但问题是:“biggerSprite”没有像我想要/预期的那样用白色着色。我猜测设置颜色意味着与现有纹理的颜色相乘。如何用纯白色填充我的“背景”/边框 Sprite ?

最佳答案

将 Sprite 着色为白色与从中删除颜色相同。您不能将多色 Sprite 并通过将其涂成白色来使其饱和。首先,您必须将背景图像设置为白色或浅色。

如果您有一个 Sprite 纹理,并且对其应用了红色,并且其 colorBlendFactor 为 1,则图像现在将变成红色阴影,原始图像的较暗部分只是较暗的红色阴影。现在对此图像应用白色会将其重置回原始颜色状态。

enter image description here

enter image description here

关于sprite-kit - 为 SKSpriteNode 添加白色边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49136070/

相关文章:

ios - iOS-以编程方式取消所有声音/音乐?

ios - 如何防止物理体改变 Sprite Kit 中的 x 位置

ios - objective-c:在不造成内存泄漏的情况下生成特定类的大量实例的正确方法?

ios - 需要大量的 SkSpriteNode 和 CPU 使用率已经达到 90%

ios - 如何使用Sprite Kit创建弯曲的水平边界

macos - 如何创建一个从一个点(CGPoint)到另一点 "points"的CGVector

ios - 应用发布 iAd 横幅不显示广告

ios - 在使用 repeat repeatForever 时如何更新 SKAction 中的内容?

swift - 在 Swift 中枚举类成员

ios - Swift 中如何计算坐标