【发布时间】:2015-09-01 08:51:06
【问题描述】:
我正在制作一个游戏,我有一个在 2 个纹理之间来回切换的节点。我想知道如何在每个纹理切换回前一个纹理之前为每个纹理添加 0.5 秒的持续时间。现在,当我运行游戏时,纹理会立即切换,所以我想延迟 0.5 秒。
我当前的代码:
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 秒的序列,然后更改纹理。您是否需要将其与某些事件同步,例如。当节点在某些其他操作后到达某个点时,或者您只是想让节点在一定时间后改变其纹理,无论如何?
-
基本上我有一个节点从屏幕左侧移动到右侧,并且我有两个纹理使它看起来像在行走。所以当它移动时,我想在两个纹理之间切换(来回),每个纹理持续 0.5 秒。
-
在这种情况下你可以使用任何你喜欢的东西。只需延迟运行一个序列。为了更改纹理,您可以按照 Sangony 的回答,或在所需节点上使用 setTexture 方法(您将在块内执行此操作)或不使用块并使用动作,就像您已经在做的那样。您也可以使用 pbodsk 的方式,但是因为它只是两个图像交换,我建议您自己尝试两种方法,看看哪种方法更适合您。当您有很多纹理要制作动画时,使用纹理制作动画很有用,但它需要一个包含纹理的数组,因此会增加一点“复杂性”:)
-
感谢您的回复。我用我当前的代码更新了我的问题。您能告诉我如何在此代码中添加延迟,以便“D2”和“DWalkRight”纹理可以在运行 MoveByX 动作时来回切换吗?我对在哪里放置序列和延迟感到困惑。
标签: swift sprite-kit skspritenode skaction sktexture