我有一个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
文件中,我可以拖动鼠标,发射器将在其来源处留下“尾迹”。看到这两张图片:
上方: 发射器处于静止状态-这是发射器随子弹移动的样子
上方: 通过物理方式“拖动” .sks文件中的发射器而向左移动-我希望发射器在移动时看起来像这样
是否有其他方法可以将发射器附着到子弹上,从而使其在移动时如第二张图像所示?
谢谢。
答案 0 :(得分:1)
由于子弹是从SKSpriteNode
继承的SKNode
,因此您可以将发射器作为子代添加到子弹中,这不仅会为您提供所需的尾随效果,而且还可以省去必须给发射器一个动作序列以匹配子弹的麻烦。它只会沿着您为子弹设定的相同轨迹移动。
(如果您确实修改了发射器的位置以调整所需的效果,请记住它现在位于其父项的坐标系中,而不是场景本身。)
bullet.addChild(emitter)