gpt4 book ai didi

ios - SKEmitterNode 粒子在开始时滞后

转载 作者:搜寻专家 更新时间:2023-11-01 05:40:44 24 4
gpt4 key购买 nike

我正在自己的小游戏中玩 SKEmitterNode。我正在射击一个炮弹,当炮弹击中场景中的一个盒子时,盒子就会被摧毁,并创建一个带有简单纹理“BOOM”的粒子效果,以便在盒子消失时进行过渡。问题是,当我启动发射器时,我希望它立即开始发射粒子,但事实并非如此,粒子会在 0.5-1 秒的短暂延迟后播放。

这是我创建发射器的函数:

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
}

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

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)
}

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

据我了解,一旦发射器连接到场景,它就应该开始发射粒子。但正如我在开头提到的,情况并非如此,粒子在 0.5-1 秒后开始出现。创建的粒子只是一个按比例放大并缓慢旋转的纹理,但没有设置延迟(甚至不确定你是否可以这样做)。

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

干杯,TK

最佳答案

解决方案是将 advanceSimulationTime 精确设置为 1.0 秒。我不完全确定为什么会这样,但我想这次创作“动画”占用了时间。

无论如何,案例已结案,感谢大家的帮助,尤其是 lchamp,因为他提出了解决方案。

关于ios - SKEmitterNode 粒子在开始时滞后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30838501/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com