2014-06-24 29 views
0

我打算移動批次雪碧中隨機進行的跨x軸從左至右表示0到320 從右到左說,320至0一些時間,SpriteKit MoveToX:從目前的統計持續時間

而且每個精靈我在整個x軸任意位置放置,

但是當我創造我的一批雪碧並應用skaction每一個

SKAction *moveRight = [SKAction moveToX:320 duration:walkAnim.duration]; 
SKAction *moveLeft = [SKAction moveToX:0 duration:walkAnim.duration]; 

一段時間整個學士學位後精靈的TCH正朝着一個方向,由左到右,然後從右到左

我知道這個問題是我的方法和moveToX時間

我需要時間我情況下,有什麼我們有moveToX像我們一樣在

[UIView setAnimationBeginsFromCurrentState:YES] 

,這樣我可以解決與隨機位置一批精靈橫跨x軸的問題

注意當我給一些空間來調用每個精靈的行動,那麼它的工作正常,但我需要一次。

人們可以從here

編輯得到示例應用程序

我需要什麼,我已經更新了代碼here

,但我需要沒有任何一個時間間隔出現在骰子所有的精靈對所有精靈採取相同的行動。

任何建議,將不勝感激
感謝
烏默爾

+0

這裏的問題究竟是什麼?如果你持續時間不變,他們當然會同時到達,然後同時開始向另一個方向前進。如果你想恆定的速度,你需要計算所需距離的持續時間。 – robert

+0

我需要運動永遠..以相同的速度,你檢查了示例應用程序,以更好地瞭解我面臨的是..在這個問題中,我不希望一些精靈以不同的速度移動。我想要所有精靈的速度相同,這就是爲什麼我使用恆定時間 –

+0

我已經更新了我的問題,這樣一些人可以更好地理解我的意思 –

回答

1

爲了有一個恆定的速度,你需要計算的持續時間根據你的精靈的當前位置的第一步行動。在完成第一步之後,您可以使用moveRightmoveLeft操作。這是一個開始向右移動的例子。

CGFloat durationForFullDistance = walkAnim.duration; 
CGFloat fullDistance = 320; 
CGFloat firstDistance = fullDistance - sprite.position.x; 
CGFloat durationForFirstMove = durationForFullDistance*firstDistance/fullDistance; 

SKAction *firstMoveRight = [SKAction moveToX:320 duration:durationForFirstMove]; 
SKAction *moveRight = [SKAction moveToX:320 duration:durationForFullDistance]; 
SKAction *moveLeft = [SKAction moveToX:0 duration:durationForFullDistance]; 

SKAction *continousMove = [SKAction sequence:@[ 
               firstMoveRight, 
               [SKAction repeatActionForever:[SKAction sequence:@[ 
                            moveLeft, 
                            moveRight 
                            ]]] 
               ]]; 
]] 
+0

因此在您的情況下,這意味着不會將self.sequence分配給精靈,但創建一個新的序列@ [firstMove,turn,self.sequence] – robert