Добавьте светящийся эффект в SKSpriteNode
У меня на темном экране движущееся черное изображение, чтобы было легче видеть, я хотел бы добавить к изображению белый свет. Это мой код для движущегося изображения:
Ghost = SKSpriteNode(imageNamed: "Ghost1")
Ghost.size = CGSize(width: 50, height: 50)
Ghost.position = CGPoint(x: self.frame.width / 2 - Ghost.frame.width, y: self.frame.height / 2)
Ghost.physicsBody = SKPhysicsBody(circleOfRadius: Ghost.frame.height / 1.4)
Ghost.physicsBody?.categoryBitMask = PhysicsCatagory.Ghost
Ghost.physicsBody?.collisionBitMask = PhysicsCatagory.Ground | PhysicsCatagory.Wall
Ghost.physicsBody?.contactTestBitMask = PhysicsCatagory.Ground | PhysicsCatagory.Wall | PhysicsCatagory.Score
Ghost.physicsBody?.affectedByGravity = false
Ghost.physicsBody?.isDynamic = true
Ghost.zPosition = 2
self.addChild(Ghost)
Я не уверен, как или что использовать, чтобы добавить свечение, если вам нужна дополнительная информация, пожалуйста, спросите.
2 ответа
Решение
Я создал это расширение, чтобы добавить эффект свечения в SKSpriteNode
Просто добавьте это в свой проект
extension SKSpriteNode {
func addGlow(radius: Float = 30) {
let effectNode = SKEffectNode()
effectNode.shouldRasterize = true
addChild(effectNode)
effectNode.addChild(SKSpriteNode(texture: texture))
effectNode.filter = CIFilter(name: "CIGaussianBlur", withInputParameters: ["inputRadius":radius])
}
}
Сейчас дан SKSpriteNode
let sun = SKSpriteNode(imageNamed: "sun")
все что вам нужно сделать
sun.addGlow()
Просто чтобы добавить к этому, вы можете выполнить это на любом типе SKNode, сначала отобразив его содержимое, используя метод текстуры (from:SKNode), доступный в экземпляре SKView.
Пример:
extension SKNode
{
func addGlow(radius:CGFloat=30)
{
let view = SKView()
let effectNode = SKEffectNode()
let texture = view.texture(from: self)
effectNode.shouldRasterize = true
effectNode.filter = CIFilter(name: "CIGaussianBlur",withInputParameters: ["inputRadius":radius])
addChild(effectNode)
effectNode.addChild(SKSpriteNode(texture: texture))
}
}