cocos2d-xでiOSとAndroidの処理を分ける

jnihelper

コードって上手に書くと綺麗ですよねぇ。ぼくが作るのは汚いけど綺麗なものを見るとうっとりしてし(略)

今回はiOSとAndroidでの処理をcocos2d-xで分ける方法を調べたので、メモも兼ねてまとめておきます。本当はツイートする方法までまとめたかったけど、それはまた次の記事で書きます。

cocos2d-xはC++を使ってクロスプラットフォームでの開発を容易にしてくれるのですが、それでもツイート機能やブラウザ機能などはiOSとAndroidそれぞれ分けてやる必要があります。
とはいっても、結構簡単でした。またひとつの共通ヘッダファイルを作ることで、普段は分けてることを意識せずにコーディングすることもできます。 続きを読む

cocos2d-xでCCLabelBMFontのフォントサイズを変更

tint_before

iOS7になってからこのタイプのiOSシミュレータが使えなくなっちゃったっぽいのですが、「シミュレータ」って感じがするので今も基本iOS6でテストしちゃってますよ。

それはともかく、cocos2d-xでCCLabelBMFontを使用する機会が多くなってきたのですが、そのフォントサイズを変更できたらと思ったので、やり方を調べてみました。 続きを読む

cocos2d-xの座標操作まとめ(convertToNodeSpace、convertToWorldSpace他)

convertto1

cocos2d-xでは、子ノードの座標は親ノードからの相対座標によって管理されています。

一方でタッチイベントは絶対座標によって管理されています。そこでcocos2d-xでは絶対座標を相対座標に、相対座標を絶対座標に変換できる関数がそれぞれ用意されているのですが、ときどき挙動が思ったのと違ったりすることがあるので、それぞれぼくなりにまとめてみました。

続きを読む

cocos2d-xのCCScale9Spriteで画像を部分的に引き延ばす

cocos2dx 今回もまたcocos2d-xのネタです。

前々回に画像の表示方法についての記事を投稿したんですけど、もうひとつCCScale9Spriteというのがとても便利なので、それについても調べたことをまとめておきます。

それでは、画像付きで本題です。 続きを読む

cocos2d-xのリファレンスカウンタを理解してクラッシュやメモリリークを防ぐ

refarence

画像のはcocos2d-xのCCObjectの中身ですよ。
cocos2d-xはC++を使っているのですが、基本C++にはJavaやC#にあるようなガベージコレクションといった便利なものがなく、本来はインスタンス生成で確保したメモリは自分で解放しなければなりません。ただcocos2d-xの場合はObject-Cと同じようにリファレンスカウンタでメモリ管理をする仕組みが実装されており、おかげでそこまで意識しなくてもcocos2d-x側が自動で使わなくなったものを削除してくれるようになっています。

とはいえ、その仕組みをある程度理解しておかないと思わぬところでメモリが解放されてクラッシュしたり、メモリリークを起こしてしまったりしちゃうので、既に何度もクラッシュさせたりメモリリークを起こしちゃった自分の為にちょっと詳しくまとめておきます(´・ω・`)

あとどういう風に実装してるのかなっていうのも調べてみました。

続きを読む

cocos2dxのCCSpriteBatchNodeを使って画像を敷き詰めてループ

batchbg

えっと、同じ画像を敷き詰めた背景ってなんて言うんでしたっけ?
忘れちゃったんですけど、要は上みたいに同じ画像で背景を敷き詰め、かつそれを動かしたいなって思って作ってみました。

cocos2dxにはCCSpriteBatchNodeというとても便利な表示方法があるんで、それを利用して敷き詰めます。

続きを読む

cocos2d-xでCCActionIntervalを自作する

cocos2dx

最近プライベートで色々なことがあったりして心が折れかけ、ちょっと開発からも遠ざかっちゃってたんですけど、また再開したんでその過程で勉強したことをまとめます。

以前からCCActionIntervalを自作したいと思ってたんで、今回ひとつ作ってみました。
※ただ、それを扱ったサイトなどがほとんど全くなかったから間違えてる箇所があるかもしれませんが…。でも一応ちゃんと動いたから多分できました。

CCActionIntervalとは?

cocos2d-xのCCActionには大きくわけて2種類のアクションがあるみたいです。

CCActionInstant

その名の通り、瞬時に実行されるアクションで、CCCallFuncやCCRemoveSelfといった実行時間の指定がないやつになります。
これに関しては、以前も自作してブログ書いてみました。

cocos2d-xで簡単なCCActionを自作する

CCActionInterval

これも文字通りですね。指定した時間によって動かされるようなアクションです。CCMoveByとかCCScaleByといったものがこれになります。

今回はこのCCActionIntervalを自作してみます。 続きを読む

cocos2d-xで簡単なCCActionを自作する

cocos2dx_new

cocos2d-xのページが一新してたんで、記念にキャプチャ。

今巷はiOS7の話題でもちきりで、ぼくもその波に乗ってうぇーいってしようとしたけど、iOS7のシミュレータとかってAppleDeveloperにならないと貰えないぽいし、まだ登録してなかったことを思い出したし、急いで登録したけど土日祝とかぶっちゃってAppleから登録完了のメールこないし(´・ω・`)ってことで無事乗れなかったんで、切ないからマイペースに今できること続けます。。

そもそも、ひとつiPhoneアプリを作ってからじゃないと乗るも何もないですよねぇ(´・ω・`)

で、本題ですけどCCActionって時間とか気にしないような簡単なものならCCActionInstantを実装すればすぐ自作できるみたいだから、してみました。
以前CCActionの種類についてまとめたけど、欲張り屋さんのぼくはあれだけじゃちょっと物足りない。
ほとんどはCCCallFuncなどをつかったらできることが多いけど、それもちょい面倒。
というわけで、自作してみます。 続きを読む

cocos2d-xで四角形と円の衝突判定

game_scsho

作り途中のアプリのスクショです。まだ全然ちゃっちいです(ちゃっちさがちっとも緩和されない…)。

今デバッグ用に円を表示させてるんですが、要はこの円と中にスプライトが入ってるかを判定したくなって、色々調べました。

参考:XNA メモ – 円と長方形の当たり判定

何か他のもっと簡単なやり方はありそうな気がするし、というより実装されてそうな気もするんだけど(見つけられなかった)、ただ結構簡単に自作できたんで、忘れないうちにまとめておきます(需要はないような気もするけど…)。

続きを読む

cocos2d-xのCCDictionaryでのデータ保存と読み込み

ccdict

まあ、上の画像はとりあえず作って貼っとけ的な心の内を見透かされそうな匂いがぷんぷんしちゃってますが。

本日二度目の投稿です。今いろいろとリファレンスを見ていじってるという状況なんで、やり方見つけたら忘れないうちに書きたくなっちゃうんで。。

cocos2d-xでのデータの保存方法って載ってるところがほとんどなくて、大抵が「プリファレンスやSQLiteを使えばいいよ」的な感じになってて、そこが気になって他の方法を調べてました。SQLiteは設定が面倒だし、わざわざデータベースを扱うほどのデータ量も(ぼくが作るゲームは)ないんで。というよりも、会社でMysqlを使いまくってるんで、家ではなるべく使いたくないというのが本音だけど(´・ω・`)SQL文なんて見たくもない。。

まあ、プリファレンスを使えばぼくが作ってるようなのなら全然事足りるんですが、CCDicrionaryでも結構簡単に保存と読み込みができたので、それをまとめておきます。 続きを読む