Logan Jahnke Logan Jahnke - 5 months ago 20
Swift Question

Make a node that doesn't move after collision iOS 8

I have nodes (sand) falling downwards.

I have other nodes (walls) that are static.

How do I make the walls not move when the sand collides with it?

let wall = SKSpriteNode(texture: chosen)

wall.position = location

wall.physicsBody = SKPhysicsBody(circleOfRadius: sprite.frame.width)
wall.physicsBody?.affectedByGravity = false
wall.physicsBody!.categoryBitMask = BLOCK

self.addChild(wall)


//////////

let sand = SKSpriteNode (imageNamed: img)
var randLoc = arc4random_uniform(26)
sand.position = CGPointMake(location.x - CGFloat(10) + CGFloat(randLoc), location.y)
self.addChild(sand)

//gravity
sand.physicsBody = SKPhysicsBody(circleOfRadius: sand.frame.width)
sand.physicsBody?.affectedByGravity = true

//contact
sand.physicsBody!.categoryBitMask = self.PARTICLE
sand.physicsBody?.collisionBitMask = self.BLOCK | self.PARTICLE

Answer

if you have wall.physicsBody?.dynamic = false & sand.physicsBody?.dynamic = true then you should be able to detect the contact without the walls being pushed/moved by the sand. - Daniel Mihaila

http://stackoverflow.com/users/4963031/daniel-mihaila