【问题标题】:SpriteKit SKEmitterNode particleAction not working in Xcode 8 / iOS 10SpriteKit SKEmitterNodeparticleAction 在 Xcode 8 / iOS 10 中不起作用
【发布时间】:2016-09-14 11:22:47
【问题描述】:

我有一个 iOS 10 SpriteKit 项目,我试图对来自 Xcode 8 中的“雪”粒子模板创建的基本粒子发射器的粒子进行操作:

let snowPath = Bundle.main.path(forResource: "Snow", ofType: "sks")!
snowEmitter = NSKeyedUnarchiver.unarchiveObject(withFile: snowPath) as! SKEmitterNode
snowEmitter.position = CGPoint(x: 0, y: size.height / 2)
snowEmitter.particlePositionRange = CGVector(dx: size.width, dy: 0)
snowEmitter.particleAction = SKAction.scale(to: 3, duration: 3)
effectLayer.addChild(snowEmitter) // effectLayer is a SKNode on the scene

发射器可以正常工作,但无论我将SKAction 设置为哪种particleAction,它都会被忽略。有没有其他人经历过这种情况?

更新:也不适用于 Xcode 7 和 iOS 9。

【问题讨论】:

  • snowEmitter.runaction 有效吗?
  • 是否有 1 个粒子存活 3 秒才能见证这种效果?
  • 这篇文章stackoverflow.com/questions/39298383/… 有粒子动作在 ios 9 上运行,所以错误一定是你的结果
  • @SimonePistecchia 我不想在发射器上运行动作,我想通过在发射器上设置particleAction 在每个粒子上运行它们。
  • @knl 不,这仍然是 Xcode 8.2.1 和 iOS 10.2 的问题。

标签: sprite-kit ios10 xcode8 skemitternode


【解决方案1】:

我认为这仍然可能是 iOS 9 遗留的错误,不能 100% 确定。我只是自己尝试过,但我也无法让它工作。

SKEmitterNode particleAction not working iOS9 Beta

在右边的inspector中直接使用snow.sks中的粒子设置不能达到同样的效果吗?

您可能正在查看 †hose 两个设置及其子设置。

1) 粒子生命周期(开始、范围)

2) 粒子尺度(起点、范围、速度)

这篇文章对每个设置都有很好的描述。

http://www.techotopia.com/index.php/An_iOS_8_Sprite_Kit_Particle_Emitter_Tutorial#Particle_Birthrate

一般提示

您的代码在前 2 行中不是很安全,因为您强制解开雪粒子。 如果您更改名称并忘记它或文件损坏,那么您将崩溃。你应该把它改成这样的

guard let snowPath = Bundle.main.path(forResource: "Snow", ofType: "sks") else { return } // or if let snowPath = ...
snowEmitter = NSKeyedUnarchiver.unarchiveObject(withFile: snowPath) as? SKEmitterNode
...

您也可以通过在定义 snowEmitter 属性的地方简单地说出这个代码来简化这段代码

let snowEmitter = SKEmitterNode(fileNamed: "Snow")

这也将返回一个可选的,就像您的旧代码一样。比在你设置发射器的方法中说这样的话(不要使用!)

if let snowEmitter = snowEmitter {
    snowEmitter.position = 
    ...
}

希望对你有帮助

【讨论】:

  • @crashoverride777 粒子设置不够。我希望粒子在向屏幕底部移动时左右“摇摆”,因此速度、加速度和角度是不够的。我意识到代码是不安全的,它只是用于快速实验。
  • @Knight0fDragon 该示例显示particleAction 工作。他们应该旋转,但不要。我在 Xcode 8 和 iOS 10 中试过那个代码,particleAction 没有效果。
  • @bjornruud。你在说什么。它在旋转。你还怎么解释星星的纹理变化
  • @Knight0fDragon 那是代码的闪烁部分,设置在发射器上的particleColorSequence上。他们似乎没有在我眼前旋转?无论如何,它们肯定不会使用我在 Xcode 8 中创建的项目中完全相同的代码进行轮换。
【解决方案2】:

还有另一种实现目标的方法。

制作两个或多个粒子系统。

创建两个或更多噪声场。

位掩码将每个粒子系统与其中一个噪声场匹配。

将噪声场放在底部,您希望摆动发生的地方

调整噪声场以适应口味。

【讨论】:

    【解决方案3】:

    作为 2021 年的数据点,在向 Touchgram 添加粒子发射器的同时,我花了几天时间对此进行了探索。我得出的结论是它们在 iOS9 中被破坏并且从未修复过。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-14
      • 2017-09-25
      • 2014-11-14
      相关资源
      最近更新 更多