【问题标题】:Any way to count the number of particles emitted by SKEmitterNode to enable coordinate tracking任何计算 SKEmitterNode 发射的粒子数量以启用坐标跟踪的方法
【发布时间】:2015-08-19 13:10:32
【问题描述】:

这就是我的情况。

我有发射器从屏幕顶部生成并移动到屏幕底部,我正在尝试获取一个 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 保持在彼此上?

【问题讨论】:

  • 当您说“PNG 图像”时,您指的是SKSpriteNode
  • @ABakerSmith 是的
  • 我仍然对你想要达到的目标有点困惑......你基本上想要SKSpriteNode 关注SKEmitterNode 吗?
  • @ABakerSmith 是的,我需要它关注

标签: swift skaction skemitternode


【解决方案1】:

要让SKEmitterNode“跟随”SKSpriteNode,到目前为止,最简单的解决方案是将发射器作为SKSpriteNode 的子级,并且只移动SKSpriteNode。例如:

sprite.addChild(emitter)

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

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

【讨论】:

  • 由于某种原因它仍然没有跟随。这是我正在使用的代码
  • self.addChild(Enemy) Enemy.addChild(enemySmoke)enemySmoke.targetNode = EnemyNode
  • Enemy 是 SKSprite,enemySmoke 是发射器。 EnemyNode 是为敌方 SKSprite 创建的节点
  • 由于某种原因,动作非常不稳定。您可以提出任何解决方案吗?
  • 嗯,我不知道为什么发射器没有随着精灵移动?怎么了?精灵是否在移动而发射器没有?关于波涛汹涌的运动,你的fps是什么样的?您可能同时在屏幕上显示了太多粒子...
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-20
  • 2013-03-30
  • 1970-01-01
相关资源
最近更新 更多