【问题标题】:How to attach particles to moving object如何将粒子附加到移动对象
【发布时间】:2015-12-16 20:00:01
【问题描述】:

我创建了一个 PowerUpTrail.sks(粒子的东西) 我正在尝试将它附加到一个移动的物体上

func SpawnPowerUp(){

    let PowerUp = SKSpriteNode(imageNamed: "PowerUp.png")
    let MinValue = self.size.width / 8
    let MaxValue = self.size.width - 20
    let SpawnPoint = UInt32(MaxValue - MinValue)
    PowerUp.position = CGPoint(x: CGFloat(arc4random_uniform(SpawnPoint)), y: self.size.height - 100)

    //Physics
    PowerUp.physicsBody = SKPhysicsBody(rectangleOfSize: PowerUp.size)
    PowerUp.physicsBody?.categoryBitMask = PhysicsCategory.PowerUp //Sätter unikt ID för Enemy, hämtat från PhysicsCategory som vi gjorde där uppe
    PowerUp.physicsBody?.contactTestBitMask = PhysicsCategory.PowerUp //Kolla om Enemy nuddar Bullet
    PowerUp.physicsBody?.affectedByGravity = false
    PowerUp.physicsBody?.dynamic = true

    let action = SKAction.moveToY(-128, duration: 5)
    let actionDone = SKAction.removeFromParent()
    PowerUp.runAction(SKAction.sequence([action, actionDone]))
    PowerUp.runAction(SKAction.rotateByAngle(5, duration: 5))


    /* this does not work!
    let PowerUpTrail = SKEmitterNode(fileNamed: "PowerUpTrail.sks")
    PowerUpTrail!.targetNode = self
    PowerUpTrail!.position = PowerUp.position
    self.addChild(PowerUpTrail!)
    */

    self.addChild(PowerUp)

}

particlethingy 生成但不跟随对象。我该如何解决?

【问题讨论】:

    标签: ios swift sprite-kit skspritenode skphysicsbody


    【解决方案1】:

    使一个节点的位置跟踪另一个节点的最简单方法是使用节点层次结构:使粒子发射器成为通电精灵的子节点。

    let powerUp = SKSpriteNode(imageNamed: "PowerUp.png")
    // ...
    let powerUpTrail = SKEmitterNode(fileNamed: "PowerUpTrail.sks")!
    powerUpTrail.targetNode = self
    powerUp.addChild(powerUpTrail)
    

    (还请注意一些 Swift 风格提示:initial-cap 通常仅用于类型名称;对变量名称使用 initial-lowercase。并在创建它时从SKEmitterNode(fileNamed:) 解开您的可选项,而不是之后每次使用它.)

    【讨论】:

    • 这太棒了,超级简单。非常感谢瑞克斯特!我对 Swift 很陌生,谢谢你指导我。我如何“解开”?你能举一个“包装”与“未包装”的例子吗?我没有线索。再次超级感谢。
    • SKEmitterNode(fileNamed:) 返回一个 Optional — 反映存在值(您要加载的发射器节点)或没有值的可能性(例如,因为文件名错误)。要获得实际值,您必须使用 ! 运算符“解包”它。最好在加载powerUpTrail 时执行一次,而不是之后执行多次。 Optional 是 Swift 中最重要的主题之一,因此我强烈建议您在 the book 中阅读它们
    猜你喜欢
    • 1970-01-01
    • 2018-10-18
    • 2019-08-12
    • 1970-01-01
    • 1970-01-01
    • 2014-10-05
    • 2012-05-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多