LostENT
LostENT

Reputation: 21

Swift - SKAction moveByX, How to get my node to move from the top/down

please forgive me as I'm a bit of a Swift noob and am creating my first game :D

Ok, so I have two nodes... one is Guava and the other is Pepper. Guava moves from the bottom of the screen to the top. I want the Pepper to move from the top of the screen to the bottom. Here's the code I have, which works fine for the Guava.

// movement of guavas
let guavaToMove = CGFloat(self.frame.size.width + 2.0  * guavaNodeTexture.size().width)
let moveGuava = SKAction.moveByX(-guavaToMove, y: self.frame.size.width, duration: NSTimeInterval(0.01 * guavaToMove))
let removeGuava = SKAction.removeFromParent()

// movement of peppers
let pepperToMove = CGFloat(self.frame.size.width + 2.0  * pepperNodeTexture.size().width)
let movePepper = SKAction.moveByX(-pepperToMove, y: self.frame.size.width, duration: NSTimeInterval(0.01 * pepperToMove))
let removePepper = SKAction.removeFromParent()

    GuavaMoveAndRemove = SKAction.sequence([moveGuava,removeGuava])

    PepperMoveAndRemove = SKAction.sequence([movePepper,removePepper])

Now I have the Guava Node anchored to the bottom of the screen and it floats up perfectly. I have the Pepper Node anchored to the top of the screen and am trying to get it to float down in a similar fashion.

Here is the code for both functions, spawnGuava and spawnPepper where both nodes/textures are anchored:

func spawnPepper(){

        //The way the Guava spawn and move

        let pepperNode = SKNode()

        let pepper = SKSpriteNode(texture: pepperNodeTexture)

        pepper.setScale(0.30)
        pepper.position = CGPointMake (self.size.width + 140, self.size.height * 0.75)
        pepper.alpha = 0.75
        pepper.physicsBody = SKPhysicsBody(rectangleOfSize: pepper.size)
        pepper.physicsBody?.affectedByGravity = false
        pepper.physicsBody?.dynamic = true
        pepper.physicsBody?.categoryBitMask = PhysicsCatagory.Guava
        pepper.physicsBody?.collisionBitMask = 1
        pepper.physicsBody?.contactTestBitMask = PhysicsCatagory.Boognish

        pepper.zPosition = 50

        pepperNode.addChild(pepper)


        pepper.runAction(PepperMoveAndRemove)

        self.addChild(pepperNode)


        if scoreIncreased == true {


        }



        //the way the pepper collide

    }


    func spawnGuava(){

        //The way the Guava spawn and move

        let guavaNode = SKNode()

        let guava = SKSpriteNode(texture: guavaNodeTexture)

        guava.setScale(0.75)
        guava.position = CGPointMake (self.size.width - 40, self.size.height * 0.05)
        guava.physicsBody = SKPhysicsBody(rectangleOfSize: guava.size)
        guava.physicsBody?.affectedByGravity = false
        guava.physicsBody?.dynamic = true
        guava.alpha = 0.75
        guava.physicsBody?.categoryBitMask = PhysicsCatagory.Guava
        guava.physicsBody?.collisionBitMask = 1
        guava.physicsBody?.contactTestBitMask = PhysicsCatagory.Boognish

        guava.zPosition = 0

        guavaNode.addChild(guava)


        guava.runAction(GuavaMoveAndRemove)

        self.addChild(guavaNode)


        if scoreIncreased == true {


        }



        //the way the guava collide

    }

Please help me configure this code accordingly so that the peppers fall from the sky :)

THANKS in advance. First post :)

FYI: I have tried modifying the code many times myself to no avail, so I have reverted it to the baseline you see now. IF I anchored the pepper to where the Guava is anchored then both would float up at the same time.

Upvotes: 2

Views: 409

Answers (2)

LostENT
LostENT

Reputation: 21

// movement of peppers let pepperToMove = CGFloat(self.frame.size.width + 2.0 * pepperNodeTexture.size().width) let movePepper = SKAction.moveByX(-pepperToMove, y: self.frame.size.height / -1, duration: NSTimeInterval(0.01 * pepperToMove)) let removePepper = SKAction.removeFromParent()

just has to divide the y value by a negative, derp... :D

Upvotes: 0

kevchoi
kevchoi

Reputation: 434

You're trying to move guavas and peppers in the opposite direction, but it seems like you are moving them in the same direction. Try removing or adding negative signs in movePepper:

let movePepper = SKAction.moveByX(-pepperToMove, y: -self.frame.size.width, duration: NSTimeInterval(0.01 * pepperToMove))

Upvotes: 0

Related Questions