Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
Nishida Kansuke
3,837 views
㉖cocos2dを覚えよう!
https://www.facebook.com/TonosamaLabo
Technology
◦
Read more
3
Save
Share
Embed
Embed presentation
1
/ 57
2
/ 57
3
/ 57
4
/ 57
5
/ 57
6
/ 57
7
/ 57
8
/ 57
9
/ 57
10
/ 57
11
/ 57
12
/ 57
13
/ 57
14
/ 57
15
/ 57
16
/ 57
17
/ 57
18
/ 57
19
/ 57
20
/ 57
21
/ 57
22
/ 57
23
/ 57
24
/ 57
25
/ 57
26
/ 57
27
/ 57
28
/ 57
29
/ 57
30
/ 57
31
/ 57
32
/ 57
33
/ 57
34
/ 57
35
/ 57
36
/ 57
37
/ 57
38
/ 57
39
/ 57
40
/ 57
41
/ 57
42
/ 57
43
/ 57
44
/ 57
45
/ 57
46
/ 57
47
/ 57
48
/ 57
49
/ 57
50
/ 57
51
/ 57
52
/ 57
53
/ 57
54
/ 57
55
/ 57
56
/ 57
57
/ 57
More Related Content
PDF
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
by
Ryota Shiroguchi
PDF
㉔cocos2dでゲームを作ろう!その2
by
Nishida Kansuke
PDF
㉕cocos2dを覚えよう!初級編③
by
Nishida Kansuke
PDF
Html canvas shooting_and_performanceup
by
Yohei Munesada
PDF
Unityクリエイターズ勉強会【2/2】【関西】発表資料
by
Masataka Motokurumada
PPTX
Aiwolf seminar 2019_ja
by
Takedaatsushi
KEY
Arctic.js
by
chikathreesix
PDF
週末プログラミングで作るカジュアルゲーム~シューティング編~
by
Nohina Hidenari
enchant.jsでゲーム制作をはじめてみよう 「パンダの会」バージョン
by
Ryota Shiroguchi
㉔cocos2dでゲームを作ろう!その2
by
Nishida Kansuke
㉕cocos2dを覚えよう!初級編③
by
Nishida Kansuke
Html canvas shooting_and_performanceup
by
Yohei Munesada
Unityクリエイターズ勉強会【2/2】【関西】発表資料
by
Masataka Motokurumada
Aiwolf seminar 2019_ja
by
Takedaatsushi
Arctic.js
by
chikathreesix
週末プログラミングで作るカジュアルゲーム~シューティング編~
by
Nohina Hidenari
What's hot
PDF
Sprite kitでの横スクロールジャンプ アクションゲーム開発
by
studioshin
PDF
Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
by
Unity Technologies Japan K.K.
PPTX
Osakijs #01 「enchant.jsハンズオン資料」
by
Yusuke HIDESHIMA
PDF
enchant.jsでゲーム制作をはじめてみよう
by
Ryota Shiroguchi
PDF
Flashup13 Basic Training of Flare3D
by
Katsushi Suzuki
PDF
人狼知能プログラミング演習資料2015
by
Kosuke Shinoda
PDF
Vue.js でタイマーを作る
by
mizdra
PDF
2012 03-03-titanium plusquicktigame2d
by
Hiroshi Oyamada
PDF
Canvas de shooting 制作のポイント
by
Yohei Munesada
PDF
㉒初期プロジェクトを改造!
by
Nishida Kansuke
PPTX
Unity2015_No7_~Unity2D~
by
CHY72
PDF
人狼知能セミナー資料案20170624
by
Kosuke Shinoda
PPTX
Aiwolfseminar2020
by
Takedaatsushi
PDF
とことんF#よぷよ! F# + XNA ゲームプログラミング入門
by
zecl1231
PDF
Flashup 12 Basic Training of Away3D
by
Katsushi Suzuki
PPTX
人狼エージェント作成講座
by
kengo009
PPTX
人狼知能エージェント作成方法
by
kengo009
PPTX
ブロックバスター制作資料
by
MaxNeetGames
PPT
週末プログラミングで作るカジュアルゲーム~レーシング編~
by
Nohina Hidenari
PPTX
幽霊の棲む家 技術資料
by
MaxNeetGames
Sprite kitでの横スクロールジャンプ アクションゲーム開発
by
studioshin
Unity道場京都スペシャル トゥーンシェーディングとノンフォトリアリスティック風絵づくり入門_
by
Unity Technologies Japan K.K.
Osakijs #01 「enchant.jsハンズオン資料」
by
Yusuke HIDESHIMA
enchant.jsでゲーム制作をはじめてみよう
by
Ryota Shiroguchi
Flashup13 Basic Training of Flare3D
by
Katsushi Suzuki
人狼知能プログラミング演習資料2015
by
Kosuke Shinoda
Vue.js でタイマーを作る
by
mizdra
2012 03-03-titanium plusquicktigame2d
by
Hiroshi Oyamada
Canvas de shooting 制作のポイント
by
Yohei Munesada
㉒初期プロジェクトを改造!
by
Nishida Kansuke
Unity2015_No7_~Unity2D~
by
CHY72
人狼知能セミナー資料案20170624
by
Kosuke Shinoda
Aiwolfseminar2020
by
Takedaatsushi
とことんF#よぷよ! F# + XNA ゲームプログラミング入門
by
zecl1231
Flashup 12 Basic Training of Away3D
by
Katsushi Suzuki
人狼エージェント作成講座
by
kengo009
人狼知能エージェント作成方法
by
kengo009
ブロックバスター制作資料
by
MaxNeetGames
週末プログラミングで作るカジュアルゲーム~レーシング編~
by
Nohina Hidenari
幽霊の棲む家 技術資料
by
MaxNeetGames
Viewers also liked
PDF
㊱タイルマップに挑戦
by
Nishida Kansuke
PPTX
iBeaconを使ったアプリ開発
by
Nishida Kansuke
PDF
㉑CSSでアニメーション!その2
by
Nishida Kansuke
PDF
㉗HTML5+jQueryでお絵かき
by
Nishida Kansuke
PDF
⑱jQueryをおぼえよう!その4
by
Nishida Kansuke
PDF
②基本機能を覚えよう!
by
Nishida Kansuke
PDF
㉞cocos2d-xの開発環境をインストールしてみよう
by
Nishida Kansuke
PDF
④ゲームを作るための仕組み(その2)
by
Nishida Kansuke
PDF
⑦Unityを使ってみよう(その1)
by
Nishida Kansuke
PDF
①とりあえず入門
by
Nishida Kansuke
PDF
⑤ゲームを作るための仕組み (その3)
by
Nishida Kansuke
PDF
⑪Unityのスクリプトを使ってみよう(その3)
by
Nishida Kansuke
PDF
20160314 すしルート#3 資料
by
Nishida Kansuke
PPTX
Pepper用課金ボックス「ロボコイン」
by
Nishida Kansuke
PDF
㉛Xcodeを覚えよう!簡単なアプリを作ってみよう!②
by
Nishida Kansuke
PDF
㉚Xcodeを覚えよう!簡単なアプリを作ってみよう!
by
Nishida Kansuke
PDF
【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ
by
Nishida Kansuke
PDF
⑫Web制作、デザイン、セキュリティなどの基礎を学ぼう2
by
Nishida Kansuke
㊱タイルマップに挑戦
by
Nishida Kansuke
iBeaconを使ったアプリ開発
by
Nishida Kansuke
㉑CSSでアニメーション!その2
by
Nishida Kansuke
㉗HTML5+jQueryでお絵かき
by
Nishida Kansuke
⑱jQueryをおぼえよう!その4
by
Nishida Kansuke
②基本機能を覚えよう!
by
Nishida Kansuke
㉞cocos2d-xの開発環境をインストールしてみよう
by
Nishida Kansuke
④ゲームを作るための仕組み(その2)
by
Nishida Kansuke
⑦Unityを使ってみよう(その1)
by
Nishida Kansuke
①とりあえず入門
by
Nishida Kansuke
⑤ゲームを作るための仕組み (その3)
by
Nishida Kansuke
⑪Unityのスクリプトを使ってみよう(その3)
by
Nishida Kansuke
20160314 すしルート#3 資料
by
Nishida Kansuke
Pepper用課金ボックス「ロボコイン」
by
Nishida Kansuke
㉛Xcodeを覚えよう!簡単なアプリを作ってみよう!②
by
Nishida Kansuke
㉚Xcodeを覚えよう!簡単なアプリを作ってみよう!
by
Nishida Kansuke
【3/13】【女性限定】ロボットで、何が出来る?ペッパーにふれてみよう&ミニアイデアソン【とのさまラボ】 powered by 朝日新聞メディアラボ
by
Nishida Kansuke
⑫Web制作、デザイン、セキュリティなどの基礎を学ぼう2
by
Nishida Kansuke
Similar to ㉖cocos2dを覚えよう!
PDF
【Unity道場教育スペシャル】Cinemachineで教えるゲームの3つの大切なこと
by
UnityTechnologiesJapan002
PDF
cocos2d-xとCocosBuilderでゲームを作ってみよう
by
Tomoaki Shimizu
PDF
㉓cocos2dでゲームを作ろう!その1
by
Nishida Kansuke
KEY
Introduction for cocos2d
by
佐藤 俊太郎
PDF
Cocos2dを使ったi phoneゲーム開発手法
by
Nishida Kansuke
PPT
Cocos2d
by
Kenji Kamijo
PPTX
Unity チュートリアル
by
Masaki Katoh
PDF
早速ゲームを作ってみよう 前編
by
YO TO
PDF
Part1
by
XxTOYOxX
【Unity道場教育スペシャル】Cinemachineで教えるゲームの3つの大切なこと
by
UnityTechnologiesJapan002
cocos2d-xとCocosBuilderでゲームを作ってみよう
by
Tomoaki Shimizu
㉓cocos2dでゲームを作ろう!その1
by
Nishida Kansuke
Introduction for cocos2d
by
佐藤 俊太郎
Cocos2dを使ったi phoneゲーム開発手法
by
Nishida Kansuke
Cocos2d
by
Kenji Kamijo
Unity チュートリアル
by
Masaki Katoh
早速ゲームを作ってみよう 前編
by
YO TO
Part1
by
XxTOYOxX
More from Nishida Kansuke
PPTX
ロボ年表を作ってみた
by
Nishida Kansuke
PPTX
PHP×コミニュケーションロボット
by
Nishida Kansuke
PDF
モダン記法で簡単プログラミング!
by
Nishida Kansuke
PDF
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料
by
Nishida Kansuke
PDF
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#3】
by
Nishida Kansuke
PDF
㉙iPhoneアプリ開発の基礎知識を覚えよう
by
Nishida Kansuke
PPTX
jsおじさん#5 ペッパーとjavascript
by
Nishida Kansuke
PDF
20170131 新潟セミナー
by
Nishida Kansuke
PDF
㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②
by
Nishida Kansuke
PDF
㉜知育アプリを作ろう! Kwikで作るデジタル絵本
by
Nishida Kansuke
PDF
㉟cocos2d-x勉強会:簡単なアプリをつくってみよう
by
Nishida Kansuke
PPT
忍者ゲーム【ペッパーアプリコンテスト2015決勝進出作品】
by
Nishida Kansuke
PDF
ハッカソン発表資料(朝日新聞 × モバイルファクトリー 異業種ハッカソン!)
by
Nishida Kansuke
PDF
Mizuho.hack 未来の銀行に必要なサービス
by
Nishida Kansuke
PDF
JSを使ったアプリ開発!(JSオジサン#3)
by
Nishida Kansuke
PDF
Smart canvasで作るカジュアルゲーム
by
Nishida Kansuke
PPTX
デブサミ2017 【16-D-5】複数台のロボットと音楽をする取り組み(太田智美・西田寛輔) -
by
Nishida Kansuke
PDF
facebookを安全に使おう!
by
Nishida Kansuke
PPT
ペッパービンゴ【ペッパーアプリコンテスト2015決勝進出作品】
by
Nishida Kansuke
PDF
クリスマスハッカソン2013:サンタロスをUNITYで作った
by
Nishida Kansuke
ロボ年表を作ってみた
by
Nishida Kansuke
PHP×コミニュケーションロボット
by
Nishida Kansuke
モダン記法で簡単プログラミング!
by
Nishida Kansuke
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#1】資料
by
Nishida Kansuke
【東京】ドコモのAIエージェント基盤「セバスチャン」勉強会【#3】
by
Nishida Kansuke
㉙iPhoneアプリ開発の基礎知識を覚えよう
by
Nishida Kansuke
jsおじさん#5 ペッパーとjavascript
by
Nishida Kansuke
20170131 新潟セミナー
by
Nishida Kansuke
㉝“知育アプリを作ろう! Kwikで作るデジタル絵本” 勉強会②
by
Nishida Kansuke
㉜知育アプリを作ろう! Kwikで作るデジタル絵本
by
Nishida Kansuke
㉟cocos2d-x勉強会:簡単なアプリをつくってみよう
by
Nishida Kansuke
忍者ゲーム【ペッパーアプリコンテスト2015決勝進出作品】
by
Nishida Kansuke
ハッカソン発表資料(朝日新聞 × モバイルファクトリー 異業種ハッカソン!)
by
Nishida Kansuke
Mizuho.hack 未来の銀行に必要なサービス
by
Nishida Kansuke
JSを使ったアプリ開発!(JSオジサン#3)
by
Nishida Kansuke
Smart canvasで作るカジュアルゲーム
by
Nishida Kansuke
デブサミ2017 【16-D-5】複数台のロボットと音楽をする取り組み(太田智美・西田寛輔) -
by
Nishida Kansuke
facebookを安全に使おう!
by
Nishida Kansuke
ペッパービンゴ【ペッパーアプリコンテスト2015決勝進出作品】
by
Nishida Kansuke
クリスマスハッカソン2013:サンタロスをUNITYで作った
by
Nishida Kansuke
Recently uploaded
PDF
20260119_VIoTLT_vol22_kitazaki_v1___.pdf
by
Ayachika Kitazaki
PDF
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
PDF
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
PDF
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
PDF
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
PDF
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
PDF
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard
by
akipii ogaoga
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
PDF
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
PDF
アジャイル導入が止まる3つの壁 ─ 文化・他部門・組織プロセスをどう乗り越えるか
by
Graat(グラーツ)
20260119_VIoTLT_vol22_kitazaki_v1___.pdf
by
Ayachika Kitazaki
第21回 Gen AI 勉強会「NotebookLMで60ページ超の スライドを作成してみた」
by
嶋 是一 (Yoshikazu SHIMA)
Starlink Direct-to-Cell (D2C) 技術の概要と将来の展望
by
CRI Japan, Inc.
ST2024_PM1_2_Case_study_of_local_newspaper_company.pdf
by
akipii ogaoga
Team Topology Adaptive Organizational Design for Rapid Delivery of Valuable S...
by
akipii ogaoga
100年後の知財業界-生成AIスライドアドリブプレゼン イーパテントYouTube配信
by
e-Patent Co., Ltd.
FY2025 IT Strategist Afternoon I Question-1 Balanced Scorecard
by
akipii ogaoga
Reiwa 7 IT Strategist Afternoon I Question-1 3C Analysis
by
akipii ogaoga
Reiwa 7 IT Strategist Afternoon I Question-1 Ansoff's Growth Vector
by
akipii ogaoga
アジャイル導入が止まる3つの壁 ─ 文化・他部門・組織プロセスをどう乗り越えるか
by
Graat(グラーツ)
㉖cocos2dを覚えよう!
1.
cocos2d 2.0for iPhone
勉強会 cocos2dを覚えよう! 初級編④
2.
動作環境 • Mac OS
X 10.8 Mountain Lion • xcode 4.5.2 • cocos2d for iPhone 2.0 http://www.cocos2d-iphone.org/
3.
はじめに • cocos2dを覚えよう!初級編④ • 当たり判定とかそういうやつ!
4.
もくじ •
忍ベーダー • 敵の移動 • 手裏剣 • 当たり判定 • 点数の増加とレベル • 改造してみよう!
5.
忍ベーダー • 次々と現れる侵略者(忍ベーダー)をたおしていこう! • 忍ベーダーが、ライフラインを超えるとゲームオーバー
6.
ルール • タイトル画面でボタンを押すとゲーム開始 • READY→STARTのあと、ゲーム開始 •
忍ベーダーは、上から攻めてくる。大きさによって硬さ や得点が違う • 忍者は、ボタンで左右移動 • 忍者が止まると上を向いて、手裏剣を自動で打つ • ライフラインに忍ベーダーが来たらゲームオーバー • GAMEOVERを表示して、タイトル画面に戻る
7.
4inch対応
• 今回は画面上部の見え る部分を変更すること で対応します • スコアなどの文字は、 画面の高さをもとに表 示して、画面内に収ま るようにします。 • 忍ベーダーや手裏剣は、 4inchの座標で計算しま す。3.5inchでも得ない 画面外の部分でも処理 を行います。
8.
がめんこうせい タイトルscene
メインscene
9.
タイトルscene • フロントlayer
– スコア • タイトルlayer – タイトルロゴ – スタートボタン – 床 • 背景layer – 背景画像
10.
メインscene • フロントlayer
– スコア • スティックlayer – 左右のボタン • メインlayer – READY? 、START! – ゲームオーバー – 忍ベーダー、手裏剣 – 忍者 – 点線、床 • 背景layer – 背景画像
11.
今回作るところ •
敵が出る • 忍者が手裏剣を投げる • あたりはんてい
12.
音楽素材について① • 音楽素材については、PANICPUMPKIN様
のご好意により、使用させていただいてい ます。 • http://panicpumpkin.omiki.com/ • ゲームBGMに特化したサイトなのでおす すめ!(曲数も多いです) • 利用報告、 著作表記、リンクなどの明記 不要で商用利用可能の音楽素材を多数公 開されています。
13.
音楽素材について② • 有料でオリジナル曲を制作してもらえる
「PANSOUND」というサイトもあるので、 ぜひ利用してみてください! • http://pansound.com/
14.
敵の移動 • 上からせまってくる忍ベーダーを作ってみ
よう!
15.
忍ベーダーの仕様 •
一定間隔で上から出現 • いろんな大きさがある • 下に移動する
16.
Invader.h @interface Invader :
NSObject{ } @property float score; @property float speed; @property float minX; @property float maxX; @property int life; @property (nonatomic, retain) CCSprite *sprite; @property (nonatomic, retain) MainLayer *mainLayer; -(BOOL)damage:(int)pow; -(BOOL)tick:(ccTime)dt; @end
17.
Invader.h @interface Invader :
NSObject{ } @property float score; @property float speed; @property float minX; @property float maxX; @property int life; @property (nonatomic, retain) CCSprite *sprite; @property (nonatomic, retain) MainLayer *mainLayer; -(BOOL)damage:(int)pow; -(BOOL)tick:(ccTime)dt; @end
18.
Invader.m① - (id)init{
if((self = [super init])){ self.sprite = [CCSprite spriteWithSpriteFrameName:@"vader.png"]; GameData *gameData = [GameData getInstance]; self.sprite.scale = (CCRANDOM_0_1() * (gameData.invaderScaleMax - gameData.invaderScaleMin)) + gameData.invaderScaleMin; self.minX = self.sprite.boundingBox.size.width / 2; self.maxX = 320 - (self.sprite.boundingBox.size.width / 2);
19.
Invader.m②
float ex = (CCRANDOM_0_1() * (self.maxX - self.minX)) + self.minX; float ey = 568 + (self.sprite.boundingBox.size.height / 2); self.sprite.position = ccp(ex, ey); self.speed = gameData.invaderSpeed / self.sprite.scale; self.life = (int)(self.sprite.scale * MIN_LIFE); self.score = self.life; [self animeStart]; } return self; }
20.
かいせつ • sprite.scaleで大きさを変更できる(通常
は1.0f) • 画面の端から自分の大きさを引いたりして、 表示位置の最小と最大を求める • 最小と最大の間をランダムで求めて、初期 表示の位置にする!
21.
かいせつ2 • speed、life、scoreを大きさを元に設定
する! • 大きいほどゆっくりで、lifeを大きくする と、良い感じになる!
22.
Invader.m③ -(void)animeStart{
[self.sprite stopAllActions]; NSMutableArray *animFrames = [NSMutableArray array]; [animFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"vader.png"]]; [animFrames addObject:[[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"vader2.png"]]; CCAnimation *animation = [CCAnimation animationWithSpriteFrames:animFrames delay:0.2f]; id repeatAnim = [CCRepeatForever actionWithAction:[CCAnimate actionWithAnimation:animation]]; [self.sprite runAction:repeatAnim]; }
23.
かいせつ • CCAnimation でフレームを指定してパラ
パラアニメみたいなのをする! • CCRepeatForever で繰り返せる! • これで、忍ベーダーがアニメーションする ようになる!
24.
MainLayer.h @property float invaderDelayCount; @property
(nonatomic, retain) NSMutableArray *invaderArray;
25.
MainLayer.m① //
敵を出す self.invaderDelayCount += dt; if(gameData.invaderDelayMax <= self.invaderDelayCount){ self.invaderDelayCount = 0; Invader *invader = [[[Invader alloc] init] autorelease]; CCSpriteBatchNode *gameBatchNode = (CCSpriteBatchNode*) [self getChildByTag:OBJECT_GAME]; [gameBatchNode addChild:invader.sprite z:SPRITE_GAME_ENEMY tag:SPRITE_GAME_ENEMY]; [self.invaderArray addObject:invader]; }
26.
MainLayer.m② // 敵の移動 BOOL isGameOver
= NO; for (Invader *invader in self.invaderArray) { BOOL isAttack = [invader tick:dt]; if(isAttack){ isGameOver = YES; break; } }
27.
かいせつ • self.invaderDelayCountが一定の値を超
えたら、忍ベーダーを1体追加する • 忍ベーダーは、配列に入れておく! • 忍ベーダーの移動処理は、配列の中をルー プして一体ずつ行う!
28.
invader.m -(BOOL)tick:(ccTime)dt{
float x = self.sprite.position.x; float y = self.sprite.position.y - (self.speed * dt); self.sprite.position = ccp(x, y); // 侵略判定 float dy = self.sprite.position.y - (self.sprite.boundingBox.size.height / 2); if(dy <= GAMEOVER_LINE){ return YES; } return NO; }
29.
かいせつ • 移動は、自分の座標をスピード*経過時間
分減らすことで行う! • 移動後、境界線まで来てるかどうかを チェックして返却する!
30.
できた! • てきだ!
31.
手裏剣 • 手裏剣を投げてみよう • INVADERみたいにクラスを作ってもいい
けど、シンプルにspriteだけで作ってみよ う!
32.
MainLayer.m① -(void)shotAction:(CGPoint)startPos{
if([self.smallShotArray count] >= SHOT_MAX){ return; } CCSprite *sp = [CCSprite spriteWithSpriteFrameName:@"shot1.png"]; sp.position = ccp(startPos.x, startPos.y + 24.0f + 20.0f); CCSpriteBatchNode *gameBatchNode = (CCSpriteBatchNode*)[self getChildByTag:OBJECT_GAME]; [gameBatchNode addChild:sp z:SPRITE_GAME_SHOT]; NSMutableArray* actions = [NSMutableArray array]; [actions addObject:[CCSpawn actions: [CCMoveTo actionWithDuration:2.0f position:ccp(sp.position.x, 500)], [CCSequence actions: [CCRotateBy actionWithDuration:0.5f angle:360], [CCRotateBy actionWithDuration:0.5f angle:360], [CCRotateBy actionWithDuration:0.5f angle:360], [CCRotateBy actionWithDuration:0.5f angle:360], nil], nil]];
33.
MainLayer.m②
[actions addObject:[CCCallFuncN actionWithTarget:self selector:@selector(shotActionEnd:)]]; id action; action = [CCSequence actionWithArray:actions]; [sp runAction:action]; [self.smallShotArray addObject:sp]; } -(void)shotActionEnd:(id)node{ [self.smallShotArray removeObject:node]; [node removeFromParentAndCleanup:YES]; }
34.
かいせつ • self.smallShotArrayに手裏剣を入れて管
理する! • CCRotateBy で1回転のアニメーション を作って4連続させることでくるくるまわ す! • shotActionEndでアニメーションが終 わったら、手裏剣を配列から消す!画面 からも消す!
35.
Ninja.m self.waitCount += dt;
if(self.way != NINJYA_WAY_UP && self.waitCount >= NINJA_UP_DELAY){ self.waitCount = 0; CCSpriteFrame *sf = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"ninjya_u.png"]; [self.sprite setDisplayFrame:sf]; self.way = NINJYA_WAY_UP; } if(self.way == NINJYA_WAY_UP && self.waitCount >= SHOT_DELAY){ self.waitCount = 0; [self.mainScene.mainLayer shotAction:self.sprite.position]; }
36.
かいせつ • 忍者が上を向いてちょっとたったら手裏剣
発射! • 手裏剣を投げたら、self.waitCount = 0; にして待ち時間をリセットする!
37.
できた! • ゲームっぽくなってき
た!
38.
当たり判定 • 手裏剣と敵の当たり判定をつけてみよう
39.
MainLayer.m①
// 弾の処理 NSMutableArray *delShotSpriteArray = [NSMutableArray array]; NSMutableArray *delInvaderArray = [NSMutableArray array]; for(CCSprite *shotSprite in self.smallShotArray){ BOOL isDelShot = NO; // 攻撃 for (Invader *invader in self.invaderArray) { // if(CGRectIntersectsRect(shotSprite.boundingBox, invader.sprite.boundingBox)){ if(CGRectContainsPoint(invader.sprite.boundingBox, shotSprite.position)){ BOOL isDel = [invader damage:SHOT_SMALL_POW]; if(isDel){ CCParticleSystem * ps = [CCParticleSystemQuad particleWithFile:@"fire.plist"]; ps.position = invader.sprite.position; ps.scale = invader.sprite.scale * 0.5f; ps.autoRemoveOnFinish = YES; [self addChild:ps z:SPRITE_GAME_PARTICLE];
40.
MainLayer.m② [delInvaderArray addObject:invader];
[invader.sprite removeFromParentAndCleanup:YES]; [[SimpleAudioEngine sharedEngine]playEffect:@"xout.caf"]; }else{ [[SimpleAudioEngine sharedEngine]playEffect:@"xhit.caf"]; } isDelShot = YES; } } [self.invaderArray removeObjectsInArray:delInvaderArray]; [delInvaderArray removeAllObjects]; // 弾を削除 if(isDelShot){ [delShotSpriteArray addObject:shotSprite]; [shotSprite removeFromParentAndCleanup:YES]; } } [self.smallShotArray removeObjectsInArray:delShotSpriteArray];
41.
かいせつ① • 今回は、手裏剣の中心が忍ベーダーの当た
り判定に入っているかどうかで判定! CGRectContainsPointを使う。 • 当たり判定については、見た目に自然にな るように判定方法を考えよう! • 手裏剣があたったら、忍ベーダーにダメー ジを与える!
42.
かいせつ② • 忍ベーダーが消滅したら消滅処理!パー
ティクルを表示する! • ps.autoRemoveOnFinish = YES;を忘れ ずに!これをYESにすると、パーティクル 消滅後自動的に終了処理が行われる! • ループ中の配列から値を消去するには、 removeObjectsInArrayを使おう!
43.
かいせつ③ • 今回は、後半たくさん敵が来るので、1個
の手裏剣で複数ダメージにしてみた! • 重なっている忍ベーダすべてにダメージを あたえる!(それがいやならbreakしよ う!)
44.
Invader.m -(BOOL)damage:(int)pow{
self.life -= pow; self.sprite.position = ccp(self.sprite.position.x, self.sprite.position.y + 32.0f); CCSpriteFrame *sf = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"vader_hit.png"]; [self.sprite setDisplayFrame:sf]; if(self.life <= 0){ GameData *gameData = [GameData getInstance]; [gameData addScore:self.score]; return YES; } return NO; }
45.
かいせつ • ダメージを受けたら、画像を変えて少し後
ろの位置に表示する!
46.
できた! • ゲームっぽくなってき
た!
47.
点数の増加とレベル • 点数の増加に合わせて、レベルが上がるよ
うにしよう!
48.
GameData.m -(void)resetScore{
self.score = 0; self.exp = 0; self.level = 1; self.invaderScaleMin = 1.0f; self.invaderScaleMax = 1.0f; self.invaderDelayMax = 2.0f; self.invaderSpeed = 90; } -(void)addScore:(int)point{ self.score += point; self.exp++; if(self.level < (self.exp / 10)){ self.level++; self.invaderScaleMax += 0.3f; self.invaderDelayMax -= 0.25f; self.invaderSpeed += 5; } }
49.
かいせつ • スコアの増加を一箇所にまとめて、スコア
増加→レベルアップの処理をおこなう! • レベルアップするたびに、忍ベーダーの最 大の大きさと、移動速度をあげて、出現間 隔を小さくする!
50.
かんせい! • まあまあいいかんじ!
51.
改造してみよう! • アイテムを作ってみよう! • バランスを調整しよう!
52.
アイテムを作ってみよう! • パワーアップするアイテムを作ってみよ
う! • 連射速度や、手裏剣の飛距離を変更してみ よう! • 自分の移動速度を早くしよう! • 貫通手裏剣を作ってみよう!
53.
バランスを調整しよう! • 敵の出現間隔を調整しよう! • アイテムの出る感覚を調整しよう! •
敵の速度を調整しよう!
54.
かんせい! • アップストア申請中!
55.
まとめ • 簡単なゲームが出来た! • cocos2d
1.0.の資料だけど、参考に! – http://tonosamart.com/blog/
56.
とのさまラボ! • 勉強会に参加した人どうしのコミニュティがほしい!
勉強会の開催日時の告知がほしい! という意見をみなさまからいただいたので、 コミニュティを作成しました! ぜひ「いいね!」をお願いします! https://www.facebook.com/TonosamaLabo
57.
おわり 主催(共同開催): 株式会社 gooya http://www.gooya.co.jp/ メドレー株式会社 http://www.medley.co.jp/ 講師:西田 寛輔
(Tonosamart) http://www.facebook.com/tonosamart