【问题标题】:SpriteKit texture durationSpriteKit 纹理持续时间
【发布时间】: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


【解决方案1】:

您可以使用包含您的图片的SKTextureAtlas

然后您可以将此图集加载到可以与SKAction.animateWithTextures:timePerFrame: 一起使用的数组中

有关SKTextureAtlas 的良好介绍,您可以查看this tutorial

希望对你有用

【讨论】:

    【解决方案2】:

    这在 SKSpriteNode docs 中有解释。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多