2015-06-16 46 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")