前回の記事の続きです。同じ位置で回転しているだけでは飛んでる感じがしないので、前に進むようにしてみました。runActionを使った動きの実装では、当たり判定などを実装する際にうまくいかないので、nextFrameメソッドで1コマずつ座標を計算するようにしました。
https://github.com/ynishi2014/SpriteKit-experiment
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
import SpriteKit class GameScene: SKScene { var spriteArray:[SKSpriteNode] = [] override func didMoveToView(view: SKView) { /* Setup your scene here */ } override func touchesBegan(touches: NSSet, withEvent event: UIEvent) { /* Called when a touch begins */ for touch: AnyObject in touches { let location = touch.locationInNode(self) let sprite = SKSpriteNode(imageNamed:"Spaceship") sprite.xScale = 0.1 sprite.yScale = 0.1 sprite.position = location spriteArray.append(sprite); self.addChild(sprite) println("sprite" + spriteArray.count.description) if spriteArray.count > 5 { spriteArray[0].removeFromParent() spriteArray.removeAtIndex(0) } } } override func update(currentTime: CFTimeInterval) { for sprite: SKSpriteNode in spriteArray { let v:CGFloat = 10 sprite.position = CGPointMake(sprite.position.x + cos(sprite.zRotation + 3.1 / 2) * v, sprite.position.y + sin(sprite.zRotation + 3.1 / 2) * v) sprite.zRotation += 0.1 } } } |