在我的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 bloss。var bloss = SKEmitterNode()
var fire = SKSpriteNode()
var firePosition : CGPoint = CGPointMake(100, 200) { didSet { fire.position = firePosition ; bloss.position = firePosition } }
正如预期的那样,这两个显示在同一位置,但是即使bloss节点的
.targetNode
设置为fire
,它看起来也不自然。自然地,我的意思是,如果targetNode移动,则发射器将在人体移动的路径上散布粒子。对我来说,发射器只是向上燃烧,不会改变形状或其他任何东西。当我尝试让firePosition
仅设置精灵位置并为发射器设置恒定位置时,它会根据我移动精灵的方式将其粒子散布到不同的侧面。抱歉,如果解释不清楚,有没有办法解决? 最佳答案
将blossitterNode的targetNode属性设置为场景。
bloss.targetNode = self
它看起来不自然,因为您将targetNode设置为精灵。发射器相对于子图形始终处于相同位置,因此您不会得到我想要的波浪形效果。