2015-06-16 90 views
0

我正在做一個遊戲,我有一個節點可以在2個紋理之間來回切換。我想知道如何在切換回前一個紋理之前爲每個紋理添加0.5秒的持續時間。現在當我運行遊戲時,紋理立即切換,所以我想延遲0.5秒。SpriteKit紋理持續時間

我當前的代碼:

func move(){ 

    let recursive = SKAction.sequence([ 

     SKAction.setTexture(SKTexture(imageNamed: "D2")), 
     SKAction.setTexture(SKTexture(imageNamed: "DWalkRight")), 
     SKAction.moveByX(frame.size.width/2.8, y: 0, duration: NSTimeInterval(randomNumber())), 
     SKAction.setTexture(SKTexture(imageNamed: "D1")), 
     SKAction.setTexture(SKTexture(imageNamed: "DWalkLeft")), 
     SKAction.moveByX(-frame.size.width/2.8, y: 0, duration: NSTimeInterval(randomNumber())), 
     SKAction.runBlock({self.move()})]) 

     Drake1.runAction(recursive, withKey: "move") 
} 
+0

運行順序將等待0.5秒,然後更改紋理。你是否需要這個與某個事件同步,例如。當節點在某個其他動作之後到達某個點時,或者您只是想讓節點在一段時間後改變其紋理,無論如何? – Whirlwind

+0

基本上我有一個節點是從屏幕左側移動到右側,並且我有兩個紋理使它看起來像圖像走路。所以當它移動時,我想在兩個紋理之間切換(每次紋理持續0.5秒)。 – NickyNick321

+0

在這種情況下,你可以使用任何你喜歡的東西。只需運行一個延遲序列。爲了改變紋理,你可以按照Sangony的回答,或者在所需的節點上使用setTexture方法(你可以在一個塊內部做到這一點),或者不使用塊並使用一個動作,就像你已經在做的那樣。你也可以使用pbodsk的方式,但因爲它只是兩個圖像交換,所以我建議你自己嘗試這兩種方法,看看更適合你的是什麼。使用紋理進行動畫處理非常有用,當你有很多紋理進行動畫處理時,但它需要一個紋理數組,以便增加一點「複雜度」:) – Whirlwind

回答

0

你可以使用一個包含SKTextureAtlas您的圖像。

該地圖集,那麼你可以加載到一個數組,你可以用SKAction.animateWithTextures:timePerFrame:

使用對於一個很好的介紹SKTextureAtlas你可以在this tutorial看一看。

希望

0

這在SKSpriteNode docs解釋這是非常有用的。

myNode.texture = SKTexture(imageNamed: "imageName")