TimurTest
TimurTest

Reputation: 45

How to randomly choose a SKSpriteNode?

I want to choose from 4 enemies using random and present it on scene. For that purpose I've made this:

func enemyPicker() -> SKSpriteNode {
    var enemyArray = [mouse, robot, drone, block, bird]
    var countArray = UInt32(enemyArray.count)
    var pickOneEneny = arc4random_uniform(countArray)
    var randomElement = Int(pickOneEnemy)

    return enemyArray.randomElement
}

But Xcode says to me that SKSpriteNode does not have a member named randomElement. And it surely doesn't, but how would I say to my function that I need it to pick and assign that random Int to an actual enemy from array?

I tried to use this answer but it's not working for me. I also tried to change -> SKSpriteNode to SKTexture, String and "T" and had not any luck with it.

My SpriteNodes are declared like:

var mouse = SKSpriteNode() 
let mouseAtlas = SKTextureAtlas(named: "mouse")
var mouseArray = [SKTexture]()
mouseArray.append(mouseAtlas.textureNamed("mouse_0"));
mouseArray.append(mouseAtlas.textureNamed("mouse_1"));
mouseArray.append(mouseAtlas.textureNamed("mouse_2"));

mouse = SKSpriteNode(texture: mouseArray[0]);
self.mouse.position = CGPointMake(CGRectGetMaxX(self.frame), CGRectGetMidY(self.frame) - 138)
self.mouse.size = CGSizeMake(self.mouse.size.width, self.mouse.size.height + mouse.size.height / 2)

self.mouse.name = "mouse"
self.addChild(mouse)

Upvotes: 0

Views: 211

Answers (1)

Leo Dabus
Leo Dabus

Reputation: 236360

func enemyPicker() -> SKSpriteNode {
    let enemyArray = [mouse, robot, drone, block, bird]
    return enemyArray[Int(arc4random_uniform(UInt32(enemyArray.count)))]
}

Upvotes: 1

Related Questions