しめ鯖日記

swift, iPhoneアプリ開発, ruby on rails等のTipsや入門記事書いてます

SpriteKitで重力の操作をする

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)

f:id:llcc:20150922210412g:plain

重力の強さ・向きはSKScenephysicsWorldgravityというプロパティーで操作します。
下のようにgravityCGVector(dx: 0.3, dy: 0.3)とすれば右上に対して重力がかかります。

self.physicsWorld.gravity = CGVector(dx: 0.3, dy: 0.3)

f:id:llcc:20150922210726g:plain

特定の要素だけ重力を効かせたくない場合はaffectedByGravityにfalseをセットします。

let myLabel = SKLabelNode(fontNamed:"Chalkduster")
myLabel.physicsBody = SKPhysicsBody(rectangleOfSize: myLabel.frame.size)
myLabel.physicsBody!.affectedByGravity = false
self.addChild(myLabel)