我有一个在黑暗的屏幕上移动的黑色图像,为了更容易看到,我想在图像中添加一个白色发光。这是我的移动图像代码:
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)
字符串
我不知道如何或用什么来添加在一个发光,如果你需要更多的信息,请询问。
3条答案
按热度按时间ej83mcc01#
我创建这个扩展是为了给SKSpriteNode添加一个发光效果
只要将此添加到您的项目
字符串
现在给定一个SKSpriteNode
型
你只需要
型
的数据
yc0p9oo02#
另外,您可以在任何类型的SKNode上执行此操作,方法是首先使用SKView示例上可用的texture(from:SKNode)方法渲染其内容。
范例:
字符串
kmpatx3s3#
最近,我在SwiftUI项目中遇到了一个性能问题,即在SKScene中对单个节点应用辉光效果。我的场景是音频可视化应用程序的一部分,由多个SKShapeNode对象组成,这些对象根据音频输入更新每个帧。最初,我使用SKShapeNode中的CIGaussianBlur过滤器对每个节点应用辉光效果,但这种方法导致了显著的延迟。
在尝试了不同的方法来优化性能后,我发现了一种解决方案,它可以显著降低对性能的影响。我没有将辉光效果应用到每个SKShapeNode,而是将其应用到SwiftUI中的整个SpriteView。这种变化带来了更流畅的体验。下面是我如何实现的:
字符串
通过将阴影修改器应用于SpriteView本身的半径,我能够实现类似辉光的效果,而不会单独处理每个节点的性能。
这种方法可能对其他在SwiftUI + SpriteKit项目中处理类似性能问题的人有帮助。