В моей игре 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
установить положение спрайтов и иметь постоянное положение для эмиттера, он распространил частицы на разные стороны в соответствии с тем, как я переместил спрайт. Извините, если объяснение было неопределенным ... Есть ли способ исправить это?