为 SKSpriteNode 选择随机图像

2023-12-25

我正在尝试构建一个简单的障碍跳跃应用程序。我希望从一组图像中随机选取障碍物的图像。我尝试过使用 arc4random_uniform 函数和 switch case 的组合,但这似乎并没有更新 SKSpriteNode。我究竟做错了什么?

class PlayScene: SKScene, SKPhysicsContactDelegate{
      ...
      var block3 = SKSpriteNode(imageNamed: "lion")
      ....
}


override func update(currentTime: NSTimeInterval) {
     .....
     blockRunner()
    }


func blockRunner() {

        var imageNamedAnimal = ""
        var randomIndex = arc4random_uniform(2)
        switch(randomIndex) {
        case 0 : imageNamedAnimal = "turtle"
        case 1: imageNamedAnimal = "lion"
        default: imageNamedAnimal = "turtle"
        }

        block3 = SKSpriteNode(imageNamed: imageNamedAnimal)
        .....
        }   

我应该在什么时候尝试设置随机图像?尽管 imageNamedAnimal 在每一帧中显示随机值,但 Block3 似乎总是选择我在代码开头发送的狮子图像。


通过创建图像并将其存储为纹理,您可以避免每次更改角色时加载图像。以下是如何执行此操作的示例:

创建一个数组来存储纹理

var textures = [SKTexture]()

In didMoveToView,创建并存储纹理

textures.append(SKTexture(imageNamed: "turtle"))
textures.append(SKTexture(imageNamed: "lion"))
textures.append(SKTexture(imageNamed: "rhino"))
...

In the blockRunner方法,添加以下内容

 // Randomly select a character
 let rand = Int(arc4random_uniform(UInt32(textures.count)))
 let texture = textures[rand] as SKTexture

 block3.texture = texture
 // Optionally, resize the sprite
 block3.size = texture.size()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为 SKSpriteNode 选择随机图像 的相关文章

随机推荐