任何计算 SKEmitterNode 发射的粒子数以启用坐标跟踪的方法

Any way to count the number of particles emitted by SKEmitterNode to enable coordinate tracking

这就是我的情况。

我有发射器从屏幕顶部产生并移动到屏幕底部,我正在尝试让 png 图像跟随它们(用于命中检测目的)

问题是我需要实时更新 PNG 图像以跟踪 skemitternode,并且因为我正在生成发射器节点的多个实例,所以我无法将它们设为全局变量(需要 n 个实例的新本地化集)

所以我想出的解决方案是有一个 while 循环,它继续将 PNG 更新到发射器节点坐标。循环的条件是当粒子数小于500(我设置的粒子寿命)时继续。

我无法让 png 图像与 skemitter 节点保持一致。它总是超过它或失去跟踪。

目前我正在使用:

while (particle < 5000) {
    enemySmoke.position = Enemy.position
    particle++
}

其中 enemySmoke 是沿 Y 轴移动的 SKEmitter 节点

var action = SKAction.moveToY(SH-SH, duration: 10 - duration)
// Basically moving to bottom of screen faster with each spawn as I have 
// duration variable incrementing.

enemySmoke.runAction(SKAction.repeatActionForever(action))
Enemy.runAction(SKAction.repeatActionForever(action))

如何让发射器和 png 保持在彼此之上?

要获得 SKEmitterNode 'follow' 和 SKSpriteNode,目前最简单的解决方案是将发射器作为 SKSpriteNode 的子级,并且只移动 SKSpriteNode。例如:

sprite.addChild(emitter)

目前发射的粒子将被添加到 SKSpriteNode。这不是一个想法行为,因为粒子将随着 SKSpriteNode 移动。要解决此问题,您应该将 SKEmitterNodetargetNode 设置为 SKScene

emitter.targetNode = self // Assuming self is the SKScene.