SpriteKitでの重力周りについて調べてみました。
重力の操作
SpriteKitでは、下のようにSKNode
に対してSKPhysicsBody
をセットすると自動で重力が働きます。
let myLabel = SKLabelNode(fontNamed:"Chalkduster") myLabel.text = "Hello, World!"; myLabel.fontSize = 45; myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame)); myLabel.physicsBody = SKPhysicsBody(rectangleOfSize: myLabel.frame.size) self.addChild(myLabel)
重力の強さ・向きはSKScene
のphysicsWorld
のgravity
というプロパティーで操作します。
下のようにgravity
をCGVector(dx: 0.3, dy: 0.3)
とすれば右上に対して重力がかかります。
self.physicsWorld.gravity = CGVector(dx: 0.3, dy: 0.3)
特定の要素だけ重力を効かせたくない場合はaffectedByGravity
にfalseをセットします。
let myLabel = SKLabelNode(fontNamed:"Chalkduster") myLabel.physicsBody = SKPhysicsBody(rectangleOfSize: myLabel.frame.size) myLabel.physicsBody!.affectedByGravity = false self.addChild(myLabel)