しめ鯖日記

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

【SpriteKit】SKNodeのサブクラスについて調査する

SKNodeのサブクラスは下の13個です。
それぞれ調べていきます。

  • SK3DNode
  • SKAudioNode
  • SKCameraNode
  • SKCropNode
  • SKEffectNode
  • SKEmitterNode
  • SKFieldNode
  • SKLabelNode
  • SKLightNode
  • SKReferenceNode
  • SKShapeNode
  • SKSpriteNode
  • SKVideoNode

SK3DNode

3Dゲーム用フレームワークのSceneKitで使われるNodeです。

SKAudioNode

iOS9から追加されたNodeです。
下のようにSceneに追加する事で曲を流す事ができます。

addChild(SKAudioNode(fileNamed: "music.mp3"))

試していないのですが下のようにURL指定でも曲を流す事ができるようです。

addChild(SKAudioNode(URL: NSURL(string: "url")!))

SKCameraNode

こちらもiOS9から使えるようになったクラスです。
SKSceneのcameraプロパティーと関係ありそうなのですが、良く分かりませんでした。

SKCropNode

サブノードに対してマスクをかける事ができるNodeです。
下のようにmaskNodeにSKNodeをセットする事でマスクをかけます。

let myLabel = SKLabelNode(fontNamed:"Chalkduster")
myLabel.text = "Hello, World!";
myLabel.fontSize = 45;
myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame));

let node = SKCropNode()
node.maskNode = SKSpriteNode(color: UIColor.blackColor(), size: CGSize(width: 400, height: 400))
node.addChild(myLabel)
addChild(node)

SKEffectNode

サブノードに対してフィルターをかける事ができるNodeです。
下のようにCISepiaToneのフィルターをかければ画像がセピア色になります。

余談ですが、SKSceneはSKEffectNodeのサブクラスになります。

let node = SKEffectNode()
node.filter = CIFilter(name: "CISepiaTone")
addChild(node)

let sprite = SKSpriteNode(imageNamed:"Spaceship")
node.addChild(sprite)

SKEmitterNode

パーティクル(爆発や炎などのアニメーション)を画面に表示する為に使います。

let node = SKEmitterNode(fileNamed: "MyParticle")!
addChild(node)

SKFieldNode

Sceneに場を追加できるNodeです。
詳しくは以前の記事をご参照下さい。

llcc.hatenablog.com

SKLabelNode

画面にテキストを表示するNodeです。

let myLabel = SKLabelNode(fontNamed:"Chalkduster")
myLabel.text = "Hello, World!"
myLabel.fontSize = 45
myLabel.position = CGPoint(x:CGRectGetMidX(self.frame), y:CGRectGetMidY(self.frame))
self.addChild(myLabel)

SKLightNode

SKSpriteNodeに対して光を当てる事ができるNodeです。
近くにある物体は明るく、遠くにある物体は暗くなります。

let node = SKLightNode()
addChild(node)

SKLightNodeの効果を与えたいNodeにはlightingBitMaskを設定します。

let sprite = SKSpriteNode(imageNamed:"Spaceship")
sprite.lightingBitMask = 1

SKReferenceNode

iOS9から追加されたNodeです。
調べたのですが良く分かりませんでした。

SKShapeNode

図形を表すNodeです。
線の色や太さを指定したり角丸にする事ができます。

let node = SKShapeNode(rect: CGRect(x: 100, y: 100, width: 100, height: 100), cornerRadius: 10)
node.fillColor = UIColor.whiteColor()
node.strokeColor = UIColor.darkGrayColor()
addChild(node)

SKSpriteNode

画像・テクスチャを表示するNodeです。
色指定で表示する事もできます。

let sprite = SKSpriteNode(imageNamed:"Spaceship")
addChild(sprite)

SKVideoNode

ビデオを再生するNodeです。
下のようにすれば動画を再生できるはずなのですが自分の使い方がうまくないのか音楽しか流れませんでした。

let node = SKVideoNode(fileNamed: "movie.mp4")
addChild(node)

参考URL

SKNode Class Reference