Submit Search
Introduction of Swift from Game Development
2 likes
1,445 views
D
Daisuke Yamashita
1 of 27
Download now
Download to read offline
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
More Related Content
PPTX
プログラマがUnityでSTGを作った話
MASA_T_O
PDF
「宴」実装時に得られたUnityプログラムノウハウ
Ryohei Tokimura
PDF
Scene操作系のエディター拡張Util2セット
Takumi Hanzawa
PDF
Unity Introduction from 2D shooting game.
Daisuke Yamashita
PDF
GGJ登録マニュアル
IGDA JAPAN
PDF
「宴」まとめ(2016年7月23UniBoookLT大会)
Ryohei Tokimura
PPTX
ゼロからのエンジニアが開発マネージャーになるまで
Yusuke Shirakawa
PDF
unityゲーム開発基礎講座
Yuki Tada
プログラマがUnityでSTGを作った話
MASA_T_O
「宴」実装時に得られたUnityプログラムノウハウ
Ryohei Tokimura
Scene操作系のエディター拡張Util2セット
Takumi Hanzawa
Unity Introduction from 2D shooting game.
Daisuke Yamashita
GGJ登録マニュアル
IGDA JAPAN
「宴」まとめ(2016年7月23UniBoookLT大会)
Ryohei Tokimura
ゼロからのエンジニアが開発マネージャーになるまで
Yusuke Shirakawa
unityゲーム開発基礎講座
Yuki Tada
What's hot
(20)
PDF
Zombi・Hazard 360度ゾンビシューティングゲーム紹介
Yuuki Ogino
PPTX
GGJ16 Seminer
syamane
PDF
Unity+Vuforia でARアプリを作ってみよう
hima_zinn
PDF
【 #Unity会 】このUnityがすごい2015年版
ui nyan
PDF
歩ける全天球動画の実験
Haruhisa Hasegawa
PPTX
Azure 三つ巴チームが送るIgnite 振り返り!
Yasuaki Matsuda
PPTX
スマホでVRコンテンツを作る方法
hima_zinn
PDF
Unity+Vuforiaで始めるARアプリ開発
Takashi Suzuki
PPTX
xR転職合同相談会 2019/05/17
Haruhisa Hasegawa
ODP
Unity入門講座その1
spi8823
PDF
Unity × graphics × effects
Hironori Sugino
PDF
ARコンテンツ作成勉強会:UnityとVuforiaではじめるAR [主要部分]
Takashi Yoshinaga
PDF
Oculus rift入門
hima_zinn
PPTX
講義用Ppt windows女子部
Rikako Takahashi
PPTX
はじめてのUnity教室 講義用ppt
Taro Takano
PPTX
ゲームエンジンの知能化のためのソフトウェアデザイン
Youichiro Miyake
PDF
GGJ2016ゲームサブミッション
IGDA JAPAN
PDF
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
株式会社MonotaRO Tech Team
PPTX
Jaws ug yokoyama-16
Akifumi Niida
PDF
Unity2DとNewGUIについて
Keigo Ando
Zombi・Hazard 360度ゾンビシューティングゲーム紹介
Yuuki Ogino
GGJ16 Seminer
syamane
Unity+Vuforia でARアプリを作ってみよう
hima_zinn
【 #Unity会 】このUnityがすごい2015年版
ui nyan
歩ける全天球動画の実験
Haruhisa Hasegawa
Azure 三つ巴チームが送るIgnite 振り返り!
Yasuaki Matsuda
スマホでVRコンテンツを作る方法
hima_zinn
Unity+Vuforiaで始めるARアプリ開発
Takashi Suzuki
xR転職合同相談会 2019/05/17
Haruhisa Hasegawa
Unity入門講座その1
spi8823
Unity × graphics × effects
Hironori Sugino
ARコンテンツ作成勉強会:UnityとVuforiaではじめるAR [主要部分]
Takashi Yoshinaga
Oculus rift入門
hima_zinn
講義用Ppt windows女子部
Rikako Takahashi
はじめてのUnity教室 講義用ppt
Taro Takano
ゲームエンジンの知能化のためのソフトウェアデザイン
Youichiro Miyake
GGJ2016ゲームサブミッション
IGDA JAPAN
大規模フロントエンドのクリーンアーキテクチャ化 ~ 年間売上1,000億円企業モノタロウの取組み ~
株式会社MonotaRO Tech Team
Jaws ug yokoyama-16
Akifumi Niida
Unity2DとNewGUIについて
Keigo Ando
Ad
Similar to Introduction of Swift from Game Development
(19)
PPTX
iPhoneアプリ開発の歩き方〜Swift編〜
Yusuke SAITO
PDF
Swift初心者がSpriteKitで一ヶ月でゲームを作った話
Masaaki Kakimoto
PDF
iOS 8/Swift エンジニア勉強会@ヤフー
大介 束田
PPTX
ノンエンジニアが手探りでシューティングゲームを作った話。Swiftで。その入り口部分。
Kotaro Mochizuki
PDF
ようこそ! Swift Playgroundsへ
KinkumaDesign
PDF
Sprite kitでの横スクロールジャンプ アクションゲーム開発
studioshin
PDF
Railsしかやってなかった人が10時間で Swift iOSゲームをつくったら
Yuta Okazaki
PDF
iPhone開発者初心者向け資料「XcodeのStoryboardで画面を作ろう!」
Toshio Ehara
PDF
Storyboard
Yukihiko Kagiyama
PDF
Sig App4
Kenji Ono
PDF
Swift Study Vol.4
Nagamine Hiromasa
PPTX
Swift (with SceneKit) で簡単な3Dゲームを作ってみた
Kazuya Hiruma
PPTX
第三回 iOSアプリ勉強会
Daisuke Tsukagoshi
PDF
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
Ryota Shiroguchi
PDF
Storyboard
Hidetoshi Mori
PDF
iPhone develop for Beginner
Sachiko Kajishima
PDF
Swiftアプリ制作入門 かんたんシューティングゲーム
聡 中川
PDF
yidev 第18回勉強会 「業務でSwiftで3ヶ月開発してきたので一旦振り返り」
佐藤 俊太郎
PDF
Unity 2D 逆引き辞典 for Beginners
Suzuki Junko
iPhoneアプリ開発の歩き方〜Swift編〜
Yusuke SAITO
Swift初心者がSpriteKitで一ヶ月でゲームを作った話
Masaaki Kakimoto
iOS 8/Swift エンジニア勉強会@ヤフー
大介 束田
ノンエンジニアが手探りでシューティングゲームを作った話。Swiftで。その入り口部分。
Kotaro Mochizuki
ようこそ! Swift Playgroundsへ
KinkumaDesign
Sprite kitでの横スクロールジャンプ アクションゲーム開発
studioshin
Railsしかやってなかった人が10時間で Swift iOSゲームをつくったら
Yuta Okazaki
iPhone開発者初心者向け資料「XcodeのStoryboardで画面を作ろう!」
Toshio Ehara
Storyboard
Yukihiko Kagiyama
Sig App4
Kenji Ono
Swift Study Vol.4
Nagamine Hiromasa
Swift (with SceneKit) で簡単な3Dゲームを作ってみた
Kazuya Hiruma
第三回 iOSアプリ勉強会
Daisuke Tsukagoshi
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
Ryota Shiroguchi
Storyboard
Hidetoshi Mori
iPhone develop for Beginner
Sachiko Kajishima
Swiftアプリ制作入門 かんたんシューティングゲーム
聡 中川
yidev 第18回勉強会 「業務でSwiftで3ヶ月開発してきたので一旦振り返り」
佐藤 俊太郎
Unity 2D 逆引き辞典 for Beginners
Suzuki Junko
Ad
More from Daisuke Yamashita
(17)
PDF
potatotips_77.pdf
Daisuke Yamashita
PDF
State management for ios development
Daisuke Yamashita
PDF
Static analysis for go lang
Daisuke Yamashita
PDF
Convert the notification feature to the notification microservice
Daisuke Yamashita
PDF
歯磨き.go #2
Daisuke Yamashita
PDF
歯磨き.go Go言語の静的解析とコード生成勉強会
Daisuke Yamashita
PDF
ライブラリを作って5年たったので振り返る
Daisuke Yamashita
PDF
Tensorflow
Daisuke Yamashita
PDF
Introduction of ios-chart in oss-labs#3
Daisuke Yamashita
PDF
About SnapKit - Open source lab -
Daisuke Yamashita
PDF
View Monitoring Tips
Daisuke Yamashita
PDF
Swift open source library - ViewMonitor -
Daisuke Yamashita
PDF
Let's Start Swift Open Source Activity.
Daisuke Yamashita
PDF
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
Daisuke Yamashita
PDF
OpenCV on mobile
Daisuke Yamashita
PDF
Introduction of Swift from Machine Learning
Daisuke Yamashita
PDF
How to measure UIView position on Native App
Daisuke Yamashita
potatotips_77.pdf
Daisuke Yamashita
State management for ios development
Daisuke Yamashita
Static analysis for go lang
Daisuke Yamashita
Convert the notification feature to the notification microservice
Daisuke Yamashita
歯磨き.go #2
Daisuke Yamashita
歯磨き.go Go言語の静的解析とコード生成勉強会
Daisuke Yamashita
ライブラリを作って5年たったので振り返る
Daisuke Yamashita
Tensorflow
Daisuke Yamashita
Introduction of ios-chart in oss-labs#3
Daisuke Yamashita
About SnapKit - Open source lab -
Daisuke Yamashita
View Monitoring Tips
Daisuke Yamashita
Swift open source library - ViewMonitor -
Daisuke Yamashita
Let's Start Swift Open Source Activity.
Daisuke Yamashita
バグのことは嫌いになってもXcodeのことは嫌いにならないでください。
Daisuke Yamashita
OpenCV on mobile
Daisuke Yamashita
Introduction of Swift from Machine Learning
Daisuke Yamashita
How to measure UIView position on Native App
Daisuke Yamashita
Introduction of Swift from Game Development
1.
ゲーム開発で学ぶSwift 入門 株式会社BizReach プロダクトマーケティング本部 山下大輔
2.
自己紹介 ・山下大輔(やました だいすけ) ・2015年1月よりビズリーチのiOSエンジニア ・@daisuke0131 ・http://www.facebook.com/daisuke0131 ・https://github.com/daisuke0131 https://itunes.apple.com/jp/app/haikurasu-ren-cainokyaria/id972002786?mt=8
3.
おしながき ・SpriteKitについて・・・30min ・ハンズオン・・・60min
4.
SpriteKit ・iOS7からサポートされた2Dゲーム用標準framework ->外部のライブラリを入れる必要がない、すぐに使える。 ・普通のview(UIView)と組み合わせて使える ->普通のアプリを作っている時にも、目を引くエフェクトなどのちょっとしたところに も使えるかも
5.
SpriteKit ・以下の4つの構成要素からなる ノード(SKNode)・・・表示される個々のパーツ アクション(SKAction)・・動きを表すもの シーン(SKScene)・・・ゲームの画面(ノードのサブクラス) ビュー(SKView)・・・アプリ上でSpriteKitを表示するView(UIViewのサブクラス) シーン ノード ノードA ノードB ノードの階層関係 シーンをビューに 紐付けることで描画
6.
SpriteKit ・座標系 x y x y (x,y) (x,y) SpriteKit 普通のアプリ(UIKit) ・位置の指定方法 (0,0) (0,0)
7.
SKNode ・ゲーム要素を作るSKNodeのサブクラス ->何かしらを表示する時に元の素材毎に使うクラスを選ぶイメージ。 SKSpriteNode・・・画像を描画。一番便利なやつ SKEmitterNode・・・パーティクルを表示。面白いやつ。 SKShapeNode・・・図形を描画。 SKVideoNode・・・動画を描画 SKLabelNode・・・文字を描画 SKCropNode・・・子ノードにマスクを適用して切り出す SKEffectNode・・・子ノードにCore Imageフィルタを適用
8.
SKAction ・SKNodeの動きを作るやつ ->ノードの移動、回転、拡大縮小などの変化を作ることができる ・使い方は、作ったActionをnodeの持つrunAction メソッドに渡すだけ ・連続的なActionも渡せるよ! let action =
SKAction.moveByX(…) node.runAction(action) let action1 = SKAction.moveByX(…) let action2 = SKAction.moveByX(…) let sequenceAction = SKAction.sequence([action1,action2]) node.runAction(sequenceAction)
9.
SKScene ・ゲーム画面。 ->スタート画面、ゲーム画面、終了画面の単位でSKSceneを作るイメージ SKView ・SpriteKitを表示するView。 ->UIViewのサブクラスであることがポイント。普通のアプリの中で普通にView として扱える。
10.
ハンズオン
11.
クソゲーハンズオン
12.
ぶどう汁ブシャーッ
13.
要件 ・ボール、バー、グレープの要素からなる ・グレープは5回ぶつかると「ブシャーッ」 ・グレープ全部「ブシャーッ」するとクリア ・ボールが下に落ちちゃうとゲームオーバー ・ボールは等速運動をする ・ボールはバー、グレープ、画面の端とは完全弾性衝突
14.
物理エンジンの使い方 ・SKNodeに定義されているphysicsBodyを設定する ->衝突、重力加速度などの物理効果が有効化 衝突の検出 ・検出したいノード同士のphysicsBodyの contactTestBitMaskに0以外の値をセットする。 ->didBeginContactが呼ばれるようになる ※contactTestBitMaskとcategoryBitMaskの論理積が0以外の 値になると衝突判定
15.
完全弾性衝突ってなんぞや?? ・運動エネルギーが保存される衝突 v v 衝突前 衝突後 ・physicsBodyのrestitutionに1.0を設定すればいい node.physicsBody?.restitution =
1.0 例えば
16.
Step1 プロジェクトの作り方 https://github.com/daisuke0131/GrapePinBall/blob/ master/resources/resources.zip?raw=true
17.
Step2 リソースの登録 https://github.com/daisuke0131/GrapePinBall/blob/ master/resources/resources.zip?raw=true drag&drop
18.
Step2 リソースの登録 https://github.com/daisuke0131/GrapePinBall/blob/ master/resources/resources.zip?raw=true
19.
Step3 GemaSceneの登録 let scene
= GameScene() let view = self.view as! SKView view.showsFPS = true view.showsNodeCount = true scene.size = view.frame.size view.presentScene(scene) ・GameViewControllerのviewDidLoadに
20.
Step4 ノードの表示と物理効果 let ball
= SKSpriteNode(imageNamed: “ball”) ball.physicsBody = SKPhysicsBody(texture: SKTexture(imageNamed:"ball"), size: ball.size) ball.position = CGPoint(x:100 ,y:100) self.addChild(ball) ・GameSceneのdidMoveToViewに ボール、バー、ボードを表示するように設定していきます。
21.
Step5 Swiftのちょっとした文法 class Grape:SKSpriteNode
{ var hitCount:Int = 0 } ・クラスの継承 ・データ構造 let grapesPosition:[(x:CGFloat,y:CGFloat)] = [(60.0,500.0), (160.0,500.0),(260.0,500.0),(110.0,400.0),(220.0,400.0)] 配列、タプル ・繰り返し //グレープの配置 for pos in grapesPosition{ makeGrape(pos) }
22.
Step6 physicsBodyのプロパティ設定 restitution・・・反発係数(ぶつかった時の跳ね返り率) linearDamping・・・移動時の減衰率(空気抵抗的なやつ) friction・・・摩擦係数 affectedByGravity・・・重力の影響を受けるかどうか dynamic・・・動くようにするかどうか。(falseだと衝突も無視) applyImpulse()・・・衝撃を与えることができる。
23.
Step7 タッチ系イベントハンドリング override func
touchesMoved(touches: Set<NSObject>, withEvent event: UIEvent) { if let touch: AnyObject = touches.first { let location = touch.locationInNode(self) let action = SKAction.moveTo(CGPoint(x: location.x, y: 100), duration: 0.2) self.board.runAction(action) } } override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) { if let touch: AnyObject = touches.first { if !isStarted{ startBall() isStarted = true } } }
24.
Step8 衝突判定 self.physicsWorld.contactDelegate =
self extension GameScene:SKPhysicsContactDelegate{ func didBeginContact(contact: SKPhysicsContact) { } } delegateの設定 以下のメソッドを追加することで衝突時に呼ばれる ※contactTestBitMaskとcategoryBitMaskの論理積が0以外の 値になると衝突判定
25.
Step9 パーティクル
26.
Step9 パーティクル let particle
= SKEmitterNode(fileNamed: "MyParticle.sks") self.addChild(particle) let removeAction = SKAction.removeFromParent() let durationAction = SKAction.waitForDuration(1) let sequenceAction = SKAction.sequence([durationAction,removeAction]) particle.runAction(sequenceAction) particle.position = CGPoint(x: g.position.x, y: g.position.y) particle.alpha = 1
27.
おしまい
Download