0

我已经创建了SpriteKit 粒子发射器文件smoke.sks在此处输入图像描述 我想让这个动画在 a 中运行UIView,但是,它没有addChild方法,我仍然有一些错误......

我试过这个解决方案:

func addSmoke() {

    //spark particle effect
    let sparkEmmitterPath: String = Bundle.main.path(forResource: "smoke", ofType: "sks")!
    let sparkEmmiter = NSKeyedUnarchiver.unarchiveObject(withFile: sparkEmmitterPath as String) as! SKEmitterNode

    sparkEmmiter.position = CGPoint(x: self.backgroundMaskView.frame.size.width, y: self.backgroundMaskView.frame.size.height/2)
    sparkEmmiter.name = "smoke"
    sparkEmmiter.zPosition = 1
    sparkEmmiter.targetNode = self
    self.view.addChild(sparkEmmiter)
}

2个错误:

sparkEmmiter.targetNode = self

无法将“ViewController”类型的值分配给“SKNode”类型?

self.addChild(sparkEmmiter)

无法将“SKEmitterNode”类型的值转换为预期的参数类型“UIViewController”

我还应该创建 SpriteKit View ( SKView) 吗?

4

1 回答 1

0

我找到的唯一解决方案。我们需要将UIView类更改为SCNView并为粒子创建scnp文件。

@IBOutlet weak var particles: SCNView!

override func viewDidLoad() {
    super.viewDidLoad()

    let scene = SCNScene()        
    let particlesNode = SCNNode()
    let particleSystem = SCNParticleSystem(named: "smoke.scnp", inDirectory: "")
    particlesNode.addParticleSystem(particleSystem!)
    scene.rootNode.addChildNode(particlesNode)
    particles.backgroundColor = .clear
    particles.scene = scene
}

但是……苹果确实删除了创建scnp文件的能力。

第二步是更改文件的类型。创造SpriteKit Particle File

(不要配置这个创建的文件,因为当你改变类型时你必须重新配置,它会重置)

现在,更改Identity类型。 在此处输入图像描述

于 2022-01-19T13:29:03.053 回答