gpt4 book ai didi

swift - 如何为动画中的单个 SKTextures 设置持续时间

转载 作者:行者123 更新时间:2023-11-28 12:56:02 25 4
gpt4 key购买 nike

我正在尝试为动画中的单个 SKTextures 设置持续时间。 armsAtlas 纹理图集下方。我想将 upTexture 随机设置为持续 1-4 秒,然后将 downTexture 设置为持续 0.3-1 秒。如何为各个纹理设置这些持续时间范围?

let armsAtlas = SKTextureAtlas(named: "arms")
let downTexture = armsAtlas.textureNamed("down")
let upTexture = armsAtlas.textureNamed("up")

最佳答案

你可以使用 SKAction 序列和它的 waitForDuration:withRange: 方法,像这样:

//By default, the sprite is initialized with downTexture
let sprite = SKSpriteNode(texture: downTexture)
sprite.position = CGPoint(x: 200, y: 200)
addChild(sprite)
let sequence = SKAction.sequence([

SKAction.runBlock({NSLog("Up texture set")}), //Added just for debugging to print a current time
SKAction.setTexture(upTexture),
SKAction.waitForDuration(2.5, withRange: 3.0), //Wait between 1.0 and 4.0 seconds
SKAction.runBlock({NSLog("Down texture set")}),
SKAction.setTexture(downTexture),
SKAction.waitForDuration(0.65, withRange: 0.7),//Wait between 0.3 and 1.0 seconds
])

let action = SKAction.repeatActionForever(sequence)

sprite.runAction(action, withKey: "aKey")

这段代码的作用是创建一个 Sprite ,默认使用 downTexture 对其进行初始化,并且:

  • 立即将纹理交换为upTexture
  • 等待 1 到 4 秒
  • 将纹理交换为downTexture
  • 等待 0.3 到 1 秒
  • 永远重复这一切

如果你想停止这个 Action ,你可以像这样访问它:

if sprite.actionForKey("aKey") != nil {
removeActionForKey("aKey")
}

关于swift - 如何为动画中的单个 SKTextures 设置持续时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34995306/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com