首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在视图中启动sparkEmmiter (创建自定义smoke.sks文件)?Swift 5

如何在视图中启动sparkEmmiter (创建自定义smoke.sks文件)?Swift 5
EN

Stack Overflow用户
提问于 2022-01-19 00:58:56
回答 1查看 77关注 0票数 0

我已经创建了SpriteKit粒子发射器文件smoke.sks

我想让这个动画在UIView中运行,但是它没有addChild方法,而且我仍然有一些错误.

我尝试过这样的解决方案:

代码语言:javascript
复制
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错误:

代码语言:javascript
复制
sparkEmmiter.targetNode = self

不能将“ViewController”类型的值赋值给键入“SKNode?”

代码语言:javascript
复制
self.addChild(sparkEmmiter)

不能将'SKEmitterNode‘类型的值转换为预期的参数类型'UIViewController'

我也应该创建SpriteKit视图(SKView)吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-19 13:29:03

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

代码语言:javascript
复制
@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
}

但是. Apple确实删除了创建scnp文件的能力。

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

(不要配置这个创建的文件,因为当您更改类型时,它将重新设置)

现在,更改Identity类型。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70764161

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档