我正在尝试向 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,则图像现在将变成红色阴影,原始图像的较暗部分只是较暗的红色阴影。现在对此图像应用白色会将其重置回原始颜色状态。
关于sprite-kit - 为 SKSpriteNode 添加白色边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49136070/