Цветовое пространство
Привет, прежде всего, обратите внимание, что существуют разные цветовые пространства.
Результат смешивания двух цветов зависит от цветового пространства, которое вы хотите использовать.
Цветовое пространство RGB
С этим пространственным цветом вы можете представить пересечение 2-х световых лучей.
В этом случае, когда смешаны 2 цвета, пересечение становится ярче.
Вы можете получить этот эффект в SpriteKit, используя blendMode = .add
.
Вот полный код.
import SpriteKit
class GameScene: SKScene {
override func didMove(to view: SKView) {
let red = SKShapeNode(circleOfRadius: 100)
red.fillColor = .red
red.blendMode = .add
red.position = CGPoint(x: 0, y: 0)
addChild(red)
let green = SKShapeNode(circleOfRadius: 100)
green.fillColor = .green
green.blendMode = .add
green.position = CGPoint(x: 0, y: 100)
addChild(green)
let blue = SKShapeNode(circleOfRadius: 100)
blue.fillColor = .blue
blue.blendMode = .add
blue.position = CGPoint(x: 87, y: 50)
addChild(blue)
}
}
И результат
CMY Цветовое пространство
Это цветовое пространство представляет собой реальный сценарий смешивания двух жидкостей.
Теперь смешивание с цветами дает новый более темный цвет.
Вы можете получить этот эффект в SpriteKit, просто используя blendMode = .multiply
(и IO предлагает белый фон).
import SpriteKit
class GameScene: SKScene {
override func didMove(to view: SKView) {
self.backgroundColor = .white
let yellow = SKShapeNode(circleOfRadius: 100)
yellow.fillColor = .yellow
yellow.blendMode = .multiply
yellow.position = CGPoint(x: 0, y: 0)
addChild(yellow)
let cyan = SKShapeNode(circleOfRadius: 100)
cyan.fillColor = .cyan
cyan.blendMode = .multiply
cyan.position = CGPoint(x: 0, y: 100)
addChild(cyan)
let magenta = SKShapeNode(circleOfRadius: 100)
magenta.fillColor = .magenta
magenta.blendMode = .multiply
magenta.position = CGPoint(x: 87, y: 50)
addChild(magenta)
}
}