Sprite kitの有用性
- 1. ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ?
!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?
Swift ビギナーズ倶楽部
第10回
「SpriteKitの有用性」
沼尻 尚騎
- 2. ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ?
!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?
自己紹介
〜沼尻 ∈ ( 東京出身 ∩ エンジニア ∩ ゲーム好き ∩ iOS開発歴3年以上 )
名前:沼尻 尚騎
出身:東京生まれ東京育ち
職業:システムエンジニア、、、なのかなぁ
趣味:ゲーム(ワンダと巨像、ICO、ガンパレ)
iOSアプリ開発歴:3年以上
Swift歴:6ヶ月
初めて触ったXcode:Xcode4
現在のXcode:Xcode6の最新版
- 3. ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ?
!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?
iOSアプリ開発に必要な知識の分類
と今日話す内容
「言語の知識」+「フレームワークの使い方」+「Xcodeの使い方」
フレームワークの使い方がメイン
難易度は、初級レベルを卒業した方
※ なお、アプリ申請には、上記知識以外に、
「デベロッパー登録関連ノウハウ」、「申請ノウハウ」 が必要
- 4. ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ?
!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?
Sprite Kitについて
プロジェクト新規作成時に、TemplateからGameを選択すると、
Game Technologyで選択できるアレ
- 5. ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ?
!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?
Sprite Kitの用途
・ゲームっぽい機能を実現したいとき
・簡単にかっこいいエフェクトを表現したいとき
- 6. ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ?
!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?
ゲーム系開発キットの個人的機能要件
Update処理 物理演算 当たり判定
- 7. ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ?
!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?
かの有名なUnity 5触った結果
Update処理
△
重処理は毎回
実行できない
物理演算
○
当たり判定
○
アプリサイズ ×
簡単に100MB超える
カジュアルゲームなので、Asset Bundleは使いたくない。。
ということで「Sprite Kit」へ
- 8. ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ?
!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?
Sprite Kit の基本イメージ
ViewControllerで画面を作るところまでは同じ
ViewControllerで管理しているSKViewに、
SKSceneで作成したSKViewを投影
SKViewのタッチイベントは、SKSceneへ渡される
SKView内で表示するものはSKNode、そのサブクラス
SKView
SKScene
SKView
ViewController
←←==→→
SKView
SKScene
SKNode SKNode SKNode
- 9. ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ?
!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?
Sprite Kit の評価 〜Update処理〜
Time Interval 付きでupdateイベントがコール
あとは自前で時間を管理してれば大体のことはできる
これは楽なので使える
- 10. ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ?
!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?
Sprite Kit の評価 〜物理演算〜
PhysicsBodyをセットすれば、自動的に重力配下に。
各要素に、
摩擦度・跳ね返り係数・回転速度・速度
などを設定でき、画面全体の重力も容易にコントロール可能
これはよい、使える
- 11. ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ?
!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?
Sprite Kit の評価 〜当たり判定〜
当たり判定は、PhysicsBodyを使用し、
BitMaskを適切に設定し、判定を行う
BitMaskとは2進数で
00000001(0x1 << 0)を自分、
00000010(0x1 << 1)を衝突物のように、
2進数の0と1の世界(Bit)で管理された世界
「 << 」は、「シフト演算」といい、ビットを左へずらす
つまり、「○ << n」は、○に2のn乗をかけることを指す
結構楽チンなので使える
- 12. ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ?
!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?
Sprite Kit のデモ
実際のソースコードを見ながら解説
- 13. ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ? ! ?
!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?!?
総評
特段、クロスプラットフォームとか意識しなければ、
Sprite Kitで普通に作れる
ただ、考え方が、UIKitとは違うので学習コストは少しあり
しかし、固定位置にある特定のボタンは、
UIKitで既存ノウハウで、ちゃちゃっと実装するとか、
併用とかできるのでよいよい
個人的には、sksファイルでリッチな表現が簡単にできるのも好み