我仍然尝试学习Swift和SpriteKit,我有一个新问题 .

所以我正在关注这个教程/视频:Noise Field

我的项目现在看起来像这样:My Project

我有100个粒子物体四处移动,我想将一些颜色的粒子混合到白色背景中 . 在教程内部,它很安静 . 你只需创建一次背景,并在绘图函数内部(在SpriteKit中这将是update()函数)你给对象一个像0.1这样的alpha值 .

SpriteKit工作安静不同 . 如果我在绘制下更改alpha值,我的粒子现在几乎被隐藏了,但颜色没有在背景上“绘制” .

我知道这是因为SpriteKit与javascript的p5库不同 . 但我想知道如何在SpriteKit中获得相同的效果..

所以在更新函数里面我有2个循环,一个用于列,一个用于行 . 我有x列和y行 - 对于每个“单元格”,我创建一个随机的CGVector . 现在,我的粒子基于最靠近粒子位置的单元格的CGVector移动 .

我的粒子类看起来像这样:

class Particle: SKShapeNode{
    var pos = CGPoint(x: 0, y: 0)
    var vel = CGVector(dx: 0, dy: 0)
    var acc = CGVector(dx: 0, dy: 0)
    var radius:CGFloat
    var maxSpeed:CGFloat
    var color: SKColor

我有一个看起来像这样的功能来显示粒子:

func show(){
    self.position = self.pos
    let rect = CGRect(origin: CGPoint(x: 0.5, y: 0.5), size: CGSize(width: self.radius*2, height: self.radius*2))
    let bezierP = UIBezierPath(ovalIn: rect)
    self.path = bezierP.cgPath
    self.fillColor = self.color
    self.strokeColor = .clear
}

在更新功能中我有这个循环:

for particle in partikelArr{
        particle.updatePos()
        particle.show()
    }

我现在怎么能“着色”白色背景或根据粒子的位置,颜色,形状和大小在背景上“绘制”我的粒子?

谢谢和最好的问候

编辑:所以我知道为每个粒子创建一个新的SKShapeNode更新函数,所以这工作,它看起来像粒子已着色背景:
Working Example

这是在更新函数中创建的:

for particle in partikelArr{
        let newP = SKShapeNode(path: particle.path!)
        newP.position = particle.pos
        newP.fillColor = particle.farbe
        newP.strokeColor = .clear
        newP.zPosition = 1000
        newP.alpha = 0.1
        self.addChild(newP)
    }

但我做 not want 为每个粒子创建SKShapeNodes(在屏幕截图上我使用了5个粒子,几秒钟后我已经在场景上有超过800个节点) . I would like to let my 100 Particles really "draw" their Shape and Color on the white Background node.