入門向けSprite Kit勉強会@京都に参加してきたメモ

先日、京都の株式会社はてなオフィスで開催されたSprite Kit勉強会に参加してきたので、自分用の備忘録として当日のメモを貼っておく。

Sprite KitはiOS7から導入されたApple純正の2Dゲームフレームワークである。iOS専用ということもあってか、UnityやUnreal Engine、cocos2d-xなどのクロスプラットフォームなゲームフレームワークに押され気味なので、もっとSprite Kitを使ってゲームを作って盛り上げていこうという趣旨の会とのことだった。

当日はSprite Kitの主要なクラスの特徴と使い方を一通り解説していただいたので、Sprite Kitの基本的な使い方がイメージできた。

特に、ゲーム以外にも通常のアプリの画面の一部にUI要素としてSKViewを組み込んで、UI表現の一環としてSprite Kitを使うこともできるという話は参考になった。

普通のアプリでも凝ったアニメーションやエフェクトを使いたいという場合に使えそうなテクニックだと思った。

スポンサーリンク

Sprite Kit勉強会@京都メモ

以下、当日のメモ。自分の備忘録用なので間違いや誤解等あるかも。

Sprite Kitの基本クラスと基礎

SKView
 ビューの土台となるクラス。UIWindow的なもの?

SKScene
 スプライトの集合を管理してレンダリング。各ゲーム画面

SKNode
 各個別のスプライト。テキスト、画像等
  →クラス階層的にはSKView, SKSceneなどのルートクラス。画面要素の階層とクラスの継承階層が逆になっている。

SKAction
 各Nodeに付与するアクション。UnityでいうScript

全てのクラスはUIResponderを継承している
 →全ての要素でタッチイベントが受け取れる

座標系の原点は左下、SKNodeの原点は中心。AnkerPointで調整する(デフォルトは0.5, 0.5)

アクション/物理シミュレーション

アクションは2種類:ByとTo
 ・By:相対的な動き(rotateさせる場合、今の角度から指定角分回転させる)
 ・To:絶対的な動き(rotateさせる場合、指定した角度まで回転させる)

アクションの並行実行と連続実行
 ・並行実行:指定したアクションを同時に実行する(回転しながら移動等)→[SKAction group:array];
 ・連続実行:指定したアクションを順次実行する(回転してから移動等)→[SKAction sequence:array];

SKPhysicsWorld
 物理シミュレーションの空間を現す。SKSceneのプロパティ
SKPhysicsBody
 各ノードに付属する物理特性。UnityのRigidBodyと同等。

物理体には2種類ある
 ・ボリュームベース:質量・体積があり重力や衝突の影響を受ける。通常のオブジェクト
 ・エッジベース:質量を持たず重力や衝突の影響を受けない。壁、ゲーム領域の境界等

物理体へ力を加える3つの方法
 ・velocity:方向と速度を与える
 ・impulse:衝動を加える(瞬間的な力、ミサイルの爆発等)
 ・force:勢いを加える(impulseと似てる?単位はニュートン)

UXKit

YosemiteでもSprite Kitが使える?
 ・UXKit、10.10.3から
 ・UIKitの知識でMacアプリが作れる!新しいMacのPhotosはUXKitで作られている?
 ・class-dumpで呼び出し階層を見る
 ・UXKitはAppKitのよくないクラスも多く継承している
  →イケてない疑惑。あまり流行らないのでは。。。

Sprite Kit本をいただきました

発表者の方が執筆した書籍が近日発売とのことだったので、じゃんけん大会の結果勝利して書籍をいただきました。ありがとうございました!

中身はSwiftで一つの横スクロールアクションゲームを作りながらSprite Kitの使い方を覚えていくというもの。1つのサンプルをじっくり作り上げていくスタイルとなっているので、一冊通せば基本的な機能の使い方は一通りマスターできるんじゃないかと思う。

またSprite KitだけじゃなくてSwiftの使い方も覚えられるという1粒で2度おいしい仕様となっている。