首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SKEmitterNode粒子起始滞后

SKEmitterNode粒子起始滞后
EN

Stack Overflow用户
提问于 2015-06-15 06:21:55
回答 1查看 573关注 0票数 2

我正在和SKEmitterNode一起玩我自己的小游戏。我在发射一个炮弹,当球击中场景中的一个盒子时,盒子就会被摧毁,当盒子消失时,会产生一个质感简单的“繁荣”粒子效应。问题是,当我启动我的发射器时,我希望它马上就开始发射粒子,但事实并非如此,粒子在延迟0.5到1秒后才会播放。

下面是我创建发射器的功能:

代码语言:javascript
复制
func createParticleEmitter(fileName: String) -> SKEmitterNode
{
    let path = NSBundle.mainBundle().pathForResource(fileName, ofType: "sks")
    assert(path != nil, "Could not find file \(fileName)")

    let obj : AnyObject? = NSKeyedUnarchiver.unarchiveObjectWithFile(path!)
    assert(obj != nil, "The emiter \(fileName) could not be created")

    return obj as! SKEmitterNode
}

然后,在碰撞时,这个函数被调用,其中位置是垂死物体的位置,场景是垂死对象的父场景:

代码语言:javascript
复制
func addOnDeathParticles(position: CGPoint, scene : SKNode)
{
    var emitter : SKEmitterNode = createParticleEmitter("boom")

    emitter.position = position

    let seq = [SKAction.waitForDuration(PARTICLE_DIE_DURATION,
               withRange:PARTICLE_DIE_DURATION_RANGE),
               SKAction.removeFromParent()]

    emitter.runAction(SKAction.sequence(seq))
    scene.addChild(emitter)
}

添加操作列表,使发射器在PARTICLE_DIE_DURATION后消失,其随机值为PARTICLE_DIE_DURATION_RANGE。

据我所知,一旦发射器连接到现场,它就应该开始发射粒子。但是,正如我在开始时提到的,情况并非如此,粒子在0.5秒后开始出现。所创建的粒子只是一个纹理,正在缩放,并缓慢旋转,但没有延迟设置(甚至不确定你是否能做到)。

有没有人有同样的行为或有什么建议,我做错了什么?(很高兴有任何帮助:)

干杯,传统知识

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-15 19:30:54

解决方案是将advanceSimulationTime设置为1秒。我不太清楚为什么会这样,但我想这一次创造的“动画”会占据上风。

不管怎样,案子结束了,感谢大家的帮助,特别是伊尚,因为他提出了解决方案。

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

https://stackoverflow.com/questions/30838501

复制
相关文章

相似问题

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