我觉得做的是创造一个路径,使项目遵循这条道路像你提到的最好办法,
这样就可以使粒子遵循类似下面
var mySatellite = SKSpriteNode(color: UIColor.redColor(), size: CGSize(width: 10, height: 10))
var spinAction = SKAction.followPath(self.createOrbit(), asOffset: false, orientToPath: true, duration: 4.0)
mySatellite.runAction(spinAction)
设置时间操作路径某处你didMoveToView
方法或相似的,
var wait = SKAction.waitForDuration(4.0)
var play = SKAction.runBlock {() -> Void in
var newPath = self.decreasedOrbit(20.0)
var spinAction = SKAction.followPath(newPath, asOffset: false, orientToPath: true, duration: 4.0)
}
var waitAndPlaySeq = SKAction.sequence([wait,play])
mySatellite.runAction(waitAndPlaySeq)
AssignNewOrbit功能向粒子分配新的路由。
decreasedOrbit
功能类似下面仅仅是用于创建新的小轨道。
,你也需要降低轨道的大小,每个时段
func decreasedOrbit(diameter : CGFloat) -> CGPath{
var newDiameter = CGFloat(diameter - 5.0)
var squareRect = CGRect(origin: CGPoint(x: 0, y: 0), size: CGSize(width: newDiameter, height: newDiameter))
var bezierPath = UIBezierPath(ovalInRect: squareRect)
return bezierPath.CGPath
}
希望它能帮助。
你是否试图创建一个螺旋呢?在这种情况下,看看http://stackoverflow.com/questions/30427482/moving-a-skspritenode-in-a-downward-loop-using-swift – ABakerSmith