• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Swift (with SceneKit) で簡単な3Dゲームを作ってみた
 

Swift (with SceneKit) で簡単な3Dゲームを作ってみた

on

  • 213 views

第2回 Swift勉強会で発表した資料になります。

第2回 Swift勉強会で発表した資料になります。

Statistics

Views

Total Views
213
Views on SlideShare
174
Embed Views
39

Actions

Likes
2
Downloads
2
Comments
0

3 Embeds 39

http://shoken.hatenablog.com 23
https://twitter.com 15
http://www.slideee.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • カヤックサイトのTOPをiOS8入れてる人に見てもらう

Swift (with SceneKit) で簡単な3Dゲームを作ってみた Swift (with SceneKit) で簡単な3Dゲームを作ってみた Presentation Transcript

  • (with SceneKit)で 簡単な3Dゲームを作ってみた 比留間 和也
  • 比留間 和也 の HTMLファイ部
  • 比留間 和也 の HTMLファイ部 技術部 x 人事部
  • 2月頭に突然の iOSチーム異動
  • Lobiっていうアプリ 作ってます
  • マイQiita っていうアプリ出しました
  • 作ったもの 3D的な
  • iOS8でカヤックサイト見るとロゴが3Dに!(゚∀゚)!
  • 実際に作ってきた ゲームのデモ
  • 小話
  • 最初に付けた名前は 「Tappy Bird 3D」
  • orz
  • 閑話休題
  • アジェンダ • Swiftを書いてみて苦労した点 • 実際のアプリ制作の感触(Objective-Cとの違い) • ライブコーディング
  • Swiftを書いてみて 苦労した点
  • 苦労した点1 Xcode6 betaの コンパイラの挙動が不安定
  • 再コンパイルしようとしたらなぜ か型が違うと怒られた(´・ω・`) 前回のコンパイルから何も変更してないのに(´;ω;`)
  • • 最初に「CGFloat」にしろやって言われてCGFloat にしていたのに、次の時はCFloatにしろって言われ る。 • println関数にふたつの引数を渡したら、書いただけ でXcodeが落ちた。 • しかもコードをパースするだけで落ちるのでXcode からは編集不可 →テキストエディタでそこだけ消してなんとか復旧 。
  • 苦労した点2なぜか叱られる
  • • 補完も効くし、ドキュメント通りに書いているのに 「Symbol Not Found」で叱られる。 • ObjCでブリッジを書いて解決。
  • // 受け取ったSCNSceneインスタンスに対して // 値を代入するだけの簡単なお仕事 - (void)physicsWorld:(SCNScene *)scene gravity:(SCNVector3)gravity { scene.physicsWorld.gravity = gravity; } ※ちなみにXcode6 beta3では上記問題は解決したようです。
  • 苦労した点3 Xcode6 beta3で コンパイルエラー
  • 「Xcode beta3 キタ━━━━(゚∀゚)━━━━!!」 と思ってDL
  • 色々期待しながら 起動し、実行 wktk
  • orz
  • なんにもしてないのに コンパイルエラーヽ( `Д´)ノ (beta2は文句言わなかったジャン・・)
  • 社内でそれを愚痴ると、 デキるエンジニアの同僚が発見
  • どうやらarm64向けコンパイル 時に、コンパイラに渡している オプションが違うとのこと ((((;゚Д゚)))) ファッ!?
  • Xcodeの設定で「Other swift flags」に 「-target-cpu cyclone」を 入れることで解決
  • 苦労した点4いきなり書式が変わる
  • // 今まで var a: Int[] = Int[]() var b: Int[] = [1, 2, 3, 4] // Beta3から var c: [Int] = [Int]() var d: [Int] = [1, 2, 3, 4, 5] ※ちなみにArrayの挙動も微妙に修正されたようです。
  • 実際のアプリ制作の感触 (Objective-Cとの違い)
  • Objective-Cとの細かい違い • イニシャライザは関数実行風に書ける。引数がある 場合は、各々ラベルと引数を渡す。 • initWithXXXみたいな書き方や、stringWithXXXみた いな生成用メソッドはなくなる。 • 「NSString.class」的な書き方は「NSString.self」 に変更。
  • キャストの仕方は スカラー値とクラスで異なる // スカラー値 // 厳密にはキャストではなくコンバージョン var a = 5 var b = Float(a) // クラス var c = Hoge() var d = c as Fuga
  • Optional型かどうかはしっか りと意識する必要がある • Swiftは基本的にnilの代入を許容していない。つまり 、宣言した型に適合するなにがしかの値を入れてお く必要がある • でもnilを入れておきたいケースはある (例えばNSErrorなど、一時的に宣言だけをしておいて参照を渡したり ) • そういう場合には「Optional」な型として変数を宣 言する
  • // OptionalなInt型宣言の例 var a: Int? = nil // こちらはエラーになる var b: Int = nil // ちなみにこれを応用して以下のようなこともできる hoge.fuga?.foo?.bar()
  • Optionalな型については Qiita記事で
  • 既存フレームワーク との連携
  • ObjC <-> Swiftの相互連携 • ObjCでSwiftのクラスを利用するには、Xcodeが自動 生成する<#ProjectName#>-Swift.hファイルをimport する。 • SwiftでObjCなクラスを利用するには、 <#ProjectName#>-Bridging-Header.hを生成して、 それに、Swiftで使いたいクラスのヘッダファイルを importする。 相互連携の細かいことはQiita記事見てね!
  • ライブコーディング
  • [DEMO]
  • ちょっとだけお知らせ
  • Lobi Rec SDK
  • Lobi Rec SDKって? • スマホゲームに動画録画機能を付けられる! • 実況プレイ動画も撮れる! 実況があるとゲームは格段に面白くなる!
  • 証拠の動画
  • SceneKitでも動いたよ! でも公式ではなくあくまで個人で入れてみただけですが
  • [DEMO]
  • ご静聴ありがとうございました