我有一个带透明区域和背景的PNG图像。
我想将它作为SKTexture用于我的SKSpriteNode,但之前它应该在某些UIColor中着色。
我试图用
来实现这个目标func colorImage(origImage: UIImage, color: UIColor) -> UIImage {
UIGraphicsBeginImageContextWithOptions(origImage.size, true, 0)
let context = UIGraphicsGetCurrentContext()
context?.setFillColor(color.cgColor)
context?.fill(CGRect(origin: CGPoint(x: 0, y: 0), size: origImage.size))
let flipVertical = CGAffineTransform.init(a: 1, b: 0, c: 0, d: -1, tx: 0, ty: origImage.size.height)
context?.concatenate(flipVertical)
context?.draw(origImage.cgImage!, in: CGRect(origin: CGPoint(x: 0, y: 0), size: origImage.size))
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image!
}
但它也为背景着色:(
我如何只为云着色?
感谢任何帮助!
答案 0 :(得分:1)
为此,最好只使用云纹理,然后将颜色混合到SKSpriteNode中。
https://developer.apple.com/reference/spritekit/skspritenode/1519639-color
请注意,您还需要设置colorBlendFactor。默认值为0.
https://developer.apple.com/reference/spritekit/skspritenode/1519780-colorblendfactor