以编程方式实现 SKEmitterNode 的 'dragged' 效果 (Swift)
Achieve 'dragged' effect of SKEmitterNode programatically (Swift)
我有一个 SKEmitterNode 用于在我的游戏中显示弹丸。发射器跟随子弹的轨迹,这是通过以下代码实现的:
let bullet = SKSpriteNode(imageNamed: "bullet") // "bullet" is a blank png
// ...Bullet properties...
self.addChild(bullet)
var actionArray = [SKAction]()
actionArray.append(SKAction.move(to: endPoint, duration: 1))
actionArray.append(SKAction.removeFromParent())
bullet.run(SKAction.sequence(actionArray))
let emitter = SKEmitterNode(fileNamed: "bulletEmitter.sks")
// ...Emitter node properties... (same position as bullet)
self.addChild(emitter!)
var emitterActionArray = [SKAction]()
emitterActionArray.append(SKAction.move(to: endPoint, duration: 1))
emitterActionArray.append(SKAction.removeFromParent())
emitter!.run(SKAction.sequence(emitterActionArray))
如上所述,发射器跟随子弹并在子弹移动时进行动画处理。但是,它的动画不受其速度的影响。在 bulletEmitter.sks
文件中,我可以四处拖动鼠标,发射器会在它来自的地方留下一个 'trail'。看这两张图:
上图:发射器静止时 - 这是发射器随子弹移动时的样子
上图: .sks 文件中发射器物理留下的轨迹 'dragging' - 我希望发射器在移动时看起来像这样
是否有其他方法可以将发射器连接到子弹上,使其在移动时如第二张图片所示?
谢谢。
由于子弹是从 SKNode
继承的 SKSpriteNode
,您可以将发射器作为子元素添加到子弹中,这不仅可以获得您正在寻找的拖尾效果for 但也使您不必为发射器提供一个动作序列来匹配子弹。它只会沿着您为子弹设置的相同轨道移动。
(如果您确实修改了发射器的位置以调整所需的效果,请记住它现在位于其父项目符号的坐标系中,而不是场景本身。)
bullet.addChild(emitter)
我有一个 SKEmitterNode 用于在我的游戏中显示弹丸。发射器跟随子弹的轨迹,这是通过以下代码实现的:
let bullet = SKSpriteNode(imageNamed: "bullet") // "bullet" is a blank png
// ...Bullet properties...
self.addChild(bullet)
var actionArray = [SKAction]()
actionArray.append(SKAction.move(to: endPoint, duration: 1))
actionArray.append(SKAction.removeFromParent())
bullet.run(SKAction.sequence(actionArray))
let emitter = SKEmitterNode(fileNamed: "bulletEmitter.sks")
// ...Emitter node properties... (same position as bullet)
self.addChild(emitter!)
var emitterActionArray = [SKAction]()
emitterActionArray.append(SKAction.move(to: endPoint, duration: 1))
emitterActionArray.append(SKAction.removeFromParent())
emitter!.run(SKAction.sequence(emitterActionArray))
如上所述,发射器跟随子弹并在子弹移动时进行动画处理。但是,它的动画不受其速度的影响。在 bulletEmitter.sks
文件中,我可以四处拖动鼠标,发射器会在它来自的地方留下一个 'trail'。看这两张图:
上图:发射器静止时 - 这是发射器随子弹移动时的样子
上图: .sks 文件中发射器物理留下的轨迹 'dragging' - 我希望发射器在移动时看起来像这样
是否有其他方法可以将发射器连接到子弹上,使其在移动时如第二张图片所示?
谢谢。
由于子弹是从 SKNode
继承的 SKSpriteNode
,您可以将发射器作为子元素添加到子弹中,这不仅可以获得您正在寻找的拖尾效果for 但也使您不必为发射器提供一个动作序列来匹配子弹。它只会沿着您为子弹设置的相同轨道移动。
(如果您确实修改了发射器的位置以调整所需的效果,请记住它现在位于其父项目符号的坐标系中,而不是场景本身。)
bullet.addChild(emitter)