2015-02-17 4 views
1

В моей игре SpriteKit я пытаюсь добавить SKEmitterNode в SKSpriteNode. Когда я двигаю пальцем по экрану, огонь в этом случае должен двигаться вместе с ним.Создание SKEmitterNode выглядит естественным?

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 } } 

Как и ожидалось, два появляются на том же самом месте, но даже несмотря на то, Блосс узел имеет свой .targetNode набор для fire это не выглядит естественным. С естественным я имею в виду, что если мишень TargetNode перемещается, эмиттер будет распространять частицы на пути, по которому движется тело. Для меня излучатель просто горит вверх и не меняет форму или что-то еще. Когда я попытался позволить firePosition установить положение спрайтов и иметь постоянное положение для эмиттера, он распространил частицы на разные стороны в соответствии с тем, как я переместил спрайт. Извините, если объяснение было неопределенным ... Есть ли способ исправить это?

ответ

3

установить свойство targetNode объекта emterNode объекта.

bloss.targetNode = self 

Это не выглядит естественным, потому что вы сделали targetNode спрайтом. эмиттер всегда находится в том же положении относительно спрайта, так что вы не получите этот волнистый эффект, я думаю, что вы собираетесь.