2015-06-10 25 views
0

我有代碼的SKSpriteNode圖像從一個圖像中的spritekit節點變化:如何使另一個

let Drake1 = SKSpriteNode(imageNamed: "Drake1") 
    Drake1.position = CGPoint(x:self.frame.size.width/3, y:self.frame.size.height - 230) 
    Drake1.zPosition = 2 
    addChild(Drake1) 

    //drake movement 
    let moveRight = SKAction.moveByX(frame.size.width/2.8, y: 0, duration: 2) 
    let moveLeft = SKAction.moveByX(-frame.size.width/2.8, y: 0, duration: 2) 
    let moveBackAndForth = SKAction.repeatActionForever(SKAction.sequence([moveRight, moveLeft])) 
    Drake1.runAction(moveBackAndForth) 

我想要做的是,當圖像被移動到右邊,我想用不同的SKSpriteNode圖像替換圖像,當它向左移動時,我想使用原始圖像,並重復這一點。我正在努力應對這些代碼。

回答

2

SpriteKit附帶SKAction,setTexture,可以相對容易地瞬時更改精靈的紋理。您可以創建每個圖像的直列SKTexture對象,在SKActions使用它們,並將它們添加到您的順序循環,像這樣:

let moveRight = SKAction.moveByX(frame.size.width/2.8, y: 0, duration: 2) 
let moveLeft = SKAction.moveByX(-frame.size.width/2.8, y: 0, duration: 2) 
let texRight = SKAction.setTexture(SKTexture(imageNamed: "Drake1r")) 
let texLeft = SKAction.setTexture(SKTexture(imageNamed: "Drake1l")) 
let moveBackAndForth = SKAction.repeatActionForever(SKAction.sequence([texRight, moveRight, texLeft, moveLeft])) 
Drake1.runAction(moveBackAndForth) 

希望這對你的作品!請注意,如果紋理大小不同,則必須將resize: Bool添加到setTexture的參數中。

+0

完美的工作謝謝你! – NickyNick321