2016-06-29 12 views
0

私は20ピクセル移動ごとに一時停止してボールを移動できるようにしたいこれを試しましたが、何もしなかったので、ボールは移動しなかったポイントにとどまります画面の最後には、私はSKAction.moveToX値の変更を伴う繰り返し

func spwan() 
{ 
    let ball:SKSpriteNode = SKScene(fileNamed: "Ball")?.childNodeWithName("ball") as! SKSpriteNode 
    ball.removeFromParent() 
    self.addChild(ball) 
    ball.name = "spriteToTrack" 
    ball.zPosition = 0 
    ball.position = CGPointMake(1950, 1000) 
    var num:CGFloat = ball.position.x 
    let a1 = SKAction.moveToX(num - 20, duration: 10) 
    // i want to get to -50 let a1 = SKAction.moveToX(-50 , duration: 10)  
    let minus = SKAction.runBlock{ 
     num -= 20 
    } 
    let sq1 = SKAction.sequence([a1,minus]) 
    ball.runAction(SKAction.repeatAction(sq1, count: 10)  
} 
+0

非常に良い、私が見てきた:とにかく、私はあなたがこのような何かを持つのでしょう方がよいでしょう(rejiggingのビットで)ので、moveToXを使用してではなく、moveBy:によってovercomplicated物事にかなりしたと思いますあなたはちょうど良い答えを受けています。がんばろう –

答えて

2

を、それが移動するかどうかを確認したかったかないので、ボールが上記のコードでは、少なくとも20ピクセルずつ移動する必要があり、私はwaitForDurationを入れていない知っているが、20個のピクセル10秒で停止したように見えるかもしれません。

func spawn() { 
    let x: CGFloat = 1950 
    let xDelta: CGFloat = -20 
    let xDestination: CGFloat = -50 
    let repeats = Int((x - xDestination)/fabs(xDelta)) 

    let move = SKAction.moveBy(CGVectorMake(xDelta, 0), duration: 2) // made it a lot quicker to show that stuff is happening 
    move.timingMode = .EaseInEaseOut 

    let ball:SKSpriteNode = SKScene(fileNamed: "Ball")?.childNodeWithName("ball") as! SKSpriteNode 
    ball.removeFromParent() 
    ball.name = "spriteToTrack" 

    ball.position = CGPointMake(x, 1000) 

    addChild(ball) 
    ball.runAction(SKAction.repeatAction(move, count: repeats)) 
} 
関連する問題