让SKEmitterNode看起来自然吗?

时间:2015-02-17 18:22:09

标签: ios swift sprite-kit

在我的SpriteKit游戏中,我尝试将SKEmitterNode添加到SKSpriteNode。 当我的手指在屏幕上移动时,这种情况下的火焰应随之移动。

 override func touchesBegan(touches: NSSet, withEvent event:UIEvent) {
    var touch = touches.anyObject() as UITouch!
    var touchLocation = touch.locationInNode(self)

    let body = self.nodeAtPoint(touchLocation)
    if body.name == FireCategoryName {
        println("Began touch on body")

        firePosition = body.position
        isFingerOnGlow = true

    }


}

 override func touchesMoved(touches: NSSet, withEvent event: UIEvent) {

    if isFingerOnGlow{

        let touch = touches.anyObject() as UITouch!
        let touchLocation = touch.locationInNode(self)
        let previousLocation = touch.previousLocationInNode(self)
        let distanceX = touchLocation.x - previousLocation.x
        let distanceY = touchLocation.y - previousLocation.y


    firePosition = CGPointMake(firePosition.x + distanceX, firePosition.y + distanceY)


    }
}

 override func touchesEnded(touches: NSSet, withEvent event: UIEvent) {
    isFingerOnGlow = false
}

我有这样的firePosition,允许它改变SKSpriteNode射击上的位置,以及SKEmitterNode花。

var bloss = SKEmitterNode()
var fire = SKSpriteNode()
var firePosition : CGPoint = CGPointMake(100, 200) { didSet { fire.position = firePosition ; bloss.position = firePosition } }

正如预期的那样,两个人出现在同一个地方,但即使将345个节点的.targetNode设置为fire,它看起来并不自然。我自然意味着如果targetNode移动,则发射器会将粒子散布在身体正在移动的路径上。对我来说,发射器只是向上燃烧,并没有改变形式或任何东西。当我尝试让firePosition只设置精灵位置并为发射器设置一个恒定位置时,它根据我移动精灵的方式将它的粒子传播到不同的边。很抱歉,如果解释含糊不清......有没有办法解决这个问题?

1 个答案:

答案 0 :(得分:4)

将bloss emitterNode的targetNode属性设置为场景。

bloss.targetNode = self

它看起来并不自然,因为你使targetNode成为精灵。发射器总是在相对于精灵的相同位置,所以你不会得到我认为你想要的波浪效果。