La propiedad Gravity no funciona en SpriteKit Scene

import SpriteKit class GameScene: SKScene { override func didMoveToView(view: SKView) { /* Setup your scene here */ } override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { /* Called when a touch begins */ for touch in touches { let location = touch.locationInNode(self) let sprite = SKSpriteNode(imageNamed:"Beach Ball-100") self.addChild(sprite) sprite.xScale = 0.5 sprite.yScale = 0.5 sprite.position = location sprite.color = UIColor.networkingColor() sprite.physicsBody = SKPhysicsBody(edgeLoopFromRect:self.frame) sprite.physicsBody?.affectedByGravity = true var action = SKAction.rotateByAngle(CGFloat(M_PI), duration:1) } } } 

El código anterior está presente en mi class de escena. Cuando lo ejecuto, el object de bola no cae como se esperaba, ya que la propiedad de gravedad se establece en verdadero. Por favor explique qué estoy haciendo mal.

El Physicsbody está equivocado. Necesitas el marco del sprite y no del mundo:

 sprite.physicsBody = SKPhysicsBody(rectangleOfSize: sprite.frame.size) 

Agregue SKPhysicsContactDelegate :

 class GameScene: SKScene, SKPhysicsContactDelegate 

Define tu physicsWorld en didMoveToView o en touchesBegan (como hiciste en el ejemplo)

 physicsWorld.gravity = CGVectorMake(0, -1.0) physicsWorld.contactDelegate = self 

Dele a su nodo el tamaño adecuado de SKPhysicsBody

 sprite.physicsBody = SKPhysicsBody(circleOfRadius: frame.size.width / 2)