Erik
Erik

Reputation: 2530

Objects appear at bottom of screen in SpriteKit

I'm learning SpriteKit and Swift, and I'm trying to make 5 small images "spawn" at the top of the screen, and slide down to the bottom. This is what I got so far, added in the didMoveToView method.

    var myArray = NSMutableArray()

    myArray.addObject(NSNumber(int: 40))
    myArray.addObject(NSNumber(int: 80))
    myArray.addObject(NSNumber(int: 120))
    myArray.addObject(NSNumber(int: 160))
    myArray.addObject(NSNumber(int: 200))

    for item in myArray
    {
        let location = CGPoint(x: CGFloat(item.floatValue), y: 1)

        let sprite = SKSpriteNode(imageNamed: "myImage")

        sprite.xScale = 0.5
        sprite.yScale = 0.5
        sprite.position = location

        let action = SKAction.moveToY(-4, duration: 4.5)

        sprite.runAction(action)

        addChild(sprite)
    }

But all the objects appear at the bottom. I've tried to change the y-position, with the same result..

Thanks!

Upvotes: 0

Views: 504

Answers (2)

Gal Marom
Gal Marom

Reputation: 8629

You need to increase the y coordinate. Think about the axis system as the left bottom corner is (0,0) and the top right is (self.frame.size.width,self.frame.size.height)

You may also want to read about anchor points - the default anchor point for an object is 0.5,0.5 so if you locate it on 1 half of it (+ 1 pixel) will appear from the top. If you want it to pop in from out of the screen you need either to change the anchor point or the poisition

Upvotes: 1

TheCodeComposer
TheCodeComposer

Reputation: 711

Try changing your location variable to this:

let location = CGPoint(x: CGFloat(item.floatValue) , y:self.size.height)

This will set the y-value to the top of the screen and move the nodes there.

Upvotes: 0

Related Questions