gpt4 book ai didi

swift - 将节点的 Sprite 更改为动画 (spriteKit)

转载 作者:搜寻专家 更新时间:2023-11-01 07:02:11 26 4
gpt4 key购买 nike

我是 Swift 的新手,我制作了一个带有硬币 Sprite 的 Sprite 套件游戏。我想让它旋转,所以我总共制作了 6 个 Sprite 。我试图通过快速更改 Sprite 来获得连续的旋转循环。我已尝试使用以下代码执行此操作。

    //This will hold all of the coin spinning sprites
let coinTextures : NSMutableArray = []

//There are 6 in total, so loop through and add them
for i in 0..<6 {
let texture : SKTexture = SKTexture(imageNamed: "Coin\(i + 1)")
coinTextures.insert(texture, at: i)
}

//When printing coinTextures, they have all been added
//Define the animation with a wait time of 0.1 seconds, also repeat forever
let coinAnimation = SKAction.repeatForever(SKAction.animate(with: coinTextures as! [SKTexture], timePerFrame: 0.1))

//Get the coin i want to spin and run the action!
SKAction.run(coinAnimation, onChildWithName: "coin1")

正如我所说,我很新,所以我不确定我在这里做错了什么。

另外,我要旋转的硬币的名称是“coin1”, Sprite 是从 coin1 到 coin 6

最佳答案

你快到了。

问题是你的最后一行创建了一个 Action ,但没有在任何东西上运行它......

你有两个选择:

1) 在你的场景中运行你的 Action

// Create an action that will run on a child
let action = SKAction.run(coinAnimation, onChildWithName: "coin1")
scene?.run(action)

2) 直接在 child 身上运行 Action

// Assuming that you have a reference to coin1
coin1.run(coinAnimation)

作为旁注,您的数组可以声明为 var coinTextures: [SKTexture] = [],您可以使用 append 向其添加项目并避免强制转换当您将纹理传递给 Action 时。

或者您可以使用更紧凑的形式来构造您的纹理数组:

let coinTextures = (1...6).map { SKTexture(imageNamed: "Coin\($0)") }

我希望这是有道理的

关于swift - 将节点的 Sprite 更改为动画 (spriteKit),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50524747/

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