SKNodeまとめ(Swift)

botman_blue iOS

Xcode-13.1

はじめに

SpriteKit でなにか表示したい場合はとりあえず SKNode を使います。下記のようにいろいろある SKNode の簡単なまとめです。

ちなみに SKScene も下記のように SKNode のサブクラスの模様。

SKCameraNode

カメラ。

簡易実装。

SKScene.camera は weak なので下記のように生成するのはだめな模様。ちゃんとインスタンスを保持して代入してやる必要がある。

カメラをキャラクターに追従させれば横スクロールアクションとかで使えそう。常に画面に表示したいものがある場合は camera の子ノードに設定する必要がある。

ドキュメント:SKCameraNode

SKReferenceNode

きっと Xcode のシーンエディタ使うときに便利なやつ(よくわからなかった)。

ドキュメント:SKReferenceNode

SKSpriteNode

画像表示ができるやつ(たぶん一番よく使う)。

sprite

簡易実装。

texture は変更可能なので touchesBegan などで下記のように表示を変えることができる。

ドキュメント:SKSpriteNode

SKShapeNode

円や四角など図形を表示できるやつ。

shape

簡易実装。

ドキュメント:SKShapeNode

SKEmitterNode

炎などパーティクル表示するやつ。

簡易実装。

上記の sks ファイルは SpriteKit Particle File で追加したものです。

ドキュメント:SKEmitterNode

SKLabelNode

文字表示するやつ(ほぼ UILabel)。

label

(改行するとめっちゃ隙間できた)

簡易実装。

サイズは自動計算されるらしくこちらで設定はできない模様。

ドキュメント:SKLabelNode

SKVideoNode

動画が再生できるやつ。

video

簡易実装。

play() と pause() だけ用意されており細かい操作をしたい場合は下記イニシャライザで AVPlayer を使えばできそう。

ドキュメント:SKVideoNode

SKTileMapNode

格子状に配置するためのやつ(基本はシーンエディタで使うっぽい)。

tile_map

簡易実装。

SKTileSetType は下記があるのでグリッド以外に六角形とかもできる模様。

ドキュメント:SKTileMapNode

こちらの記事が参考になりました。

SK3DNode

SceneKit のオブジェクトを表示できるやつ。

3d

簡易実装。

ドキュメント:SK3DNode

SKAudioNode

音声再生ができるやつ。

簡易実装。

ドキュメント:SKAudioNode

SKLightNode

SKSpriteNode に光を当てるやつ。

light

簡易実装。

BitMask によりどのノードが影響を受けるか設定する必要があり下記の BitMask がある。

  • lightingBitMask
    光に照らされるかどうか?
  • shadowedBitMask
    影ができるかどうか?(あんまわかってない)
  • shadowCastBitMask
    光を遮るかどうか?

光と影の色も設定できる模様。

ドキュメント:SKLightNode

SKFieldNode

磁場など物理効果を与えるやつ?(よくわかってない)

簡易実装。

バネ以外にも色々あるみたいです。

ドキュメント:SKFieldNode

SKEffectNode

CIFileter を使って色々効果をつけらられるやつ。

effect

簡易実装。

ドキュメント:SKEffectNode

こちらの記事にいろいろ載ってました。

【Swift】SpriteKitの使い方。SKEffectNodeを使って画像をぼかす。(Swift 2.2、XCode 7.3)

SKCropNode

指定のノードの形で子ノードをくり抜くやつ。

crop

(オレンジ正方形のノードをカエルでくり抜いたやつ)

簡易実装。

ドキュメント:SKCropNode

SKTransformNode

子ノードを 3D 回転させるやつ?(あんまわかってない)

transform

簡易実装。

このへん使って回転させるらしい。

ドキュメント:SKTransformNode

おわりに

これで SpriteKit で色々表示できるようになりました!もうなんか作れそうな気がしてきます!

コメント

タイトルとURLをコピーしました