我正在做一个游戏,我有一个节点可以在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.5秒,然后更改纹理。你是否需要这个与某个事件同步,例如。当节点在某个其他动作之后到达某个点时,或者您只是想让节点在一段时间后改变其纹理,无论如何? – Whirlwind
基本上我有一个节点是从屏幕左侧移动到右侧,并且我有两个纹理使它看起来像图像走路。所以当它移动时,我想在两个纹理之间切换(每次纹理持续0.5秒)。 – NickyNick321
在这种情况下,你可以使用任何你喜欢的东西。只需运行一个延迟序列。为了改变纹理,你可以按照Sangony的回答,或者在所需的节点上使用setTexture方法(你可以在一个块内部做到这一点),或者不使用块并使用一个动作,就像你已经在做的那样。你也可以使用pbodsk的方式,但因为它只是两个图像交换,所以我建议你自己尝试这两种方法,看看更适合你的是什么。使用纹理进行动画处理非常有用,当你有很多纹理进行动画处理时,但它需要一个纹理数组,以便增加一点“复杂度”:) – Whirlwind