だいたい47度

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PageTop

cocos2dの開発で初心者がよくハマったところ

とりあえず初のiPhoneアプリ「指先百人一首」もリリースできそうなので、開発でハマったところをメモしておこうと思います。僕は趣味プログラマなので、本職の人たちには当たり前のことばかりだと思いますが……。


sharedScene大事
シーンにあたるものは+sharedSceneのような関数で、それ自身を呼び出せるようにしておくのが結局楽でした。本に書いてあることは正しかった。こんな感じ。

static MyScene* _instance;

+ (id)sharedScene{
NSAssert(_instance != nil, @"MyScene is not initiated");
return _instance;
}

- (id)init{
if (self = [super init]) {
_instance = self;


昔から何度も言われていることですが、クラスは細かく切った方がよいです。いや、すごい当然のことなんでしょうけど、自分で作成したものを修正しているととても良くわかるのですね。開発の後半になればなるほど、修正するための時間が短くなっていくことに驚きました。
んで、細かく切る場合、上で述べた+sharedSceneがないと全然書けません。


画像についての注意点
Retina対応のために、2倍の大きさの画像を用意しなくてはなりません。これは知ってたから良かったけど、あとで気づいて戻るのは厳しいよね。figure.pngの2倍のファイルはfigure-hd.pngのように指定してやれば良いように初期設定はされているはずです。cocos2dの外側になるDefault.pngとかは@2xなどの違う表記です。

んで、2倍の大きさの画像ファイルも2048x2048内に収めなくてはなりません。これが意外に面倒くさい。多くの画像を使う場合は、複数ファイルにわける必要があります。このときCCSpriteBatchNodeを使っているときは子のtextureを別にできないので頭の片隅にいれておかないと面倒な事になることもあります。iPhone5は縦の長さが568 * 2 = 1136pxなわけですが、この大きさだと縦に2つ入らないのも面倒なところ。

最初に配置するときは取り敢えずiPhone4のサイズでいいと思いますが、後でiPhone5の大きさにも対応しなきゃいけません。iOSシミュレータのハードウェア>デバイス>iPhone(Retina 4-inch)でたまに見ておきましょう。PCスペックによっては、画面サイズをウィンドウ>表示サイズから変えなきゃいけないのと、シミュレータがカクカクになるのが難点。


CCSprite関係で最初引っかかるところ
position系は初めの頃よくハマっていたところ。position変えてみたら画面上からいなくなっちゃった、とか。positionは親からの相対位置なのですよね。特にtouchされたかどうかの確認の際には、親のpositionをccpSubしてあげないとうまく処理できなかったりします。

あと、他のspriteのcontentsizeを参照する場合にscaleを考慮し無くてはならないことにも注意。scaleが変更されていたら掛けてやらないとズレちゃいます。

CCSpriteにCCLabelTTFをaddするときはopacity変化に注意。spriteをfadeoutさせてもlabelは薄くなりません。spriteのsetOpacityを上書きしてあげるとスムーズ(いちいちspriteとlabelの両方をfadeoutさせなくてよいです)。


onEnter内のactionが起こらないなら、まずsuper忘れ
onEnter内で処理したactionが機能しない。描画もうまく行っているし、ビルドも通っているのに……。
というときは大体[super onEnter];忘れです。
ただのポカですが、その分原因が思いつくまで時間かかったりします。deallocとかはsuperを呼び出さないとエラーメッセージでるので気づくんですがね。

あとはCCSpriteBatchNodeにrunActionをさせちゃってたこともあったなぁ。これは気づきやすいし、childrenにrunActionさせてあげればいいだけの話。


Layerがdeallocされているかは確認しよう
deallocに下記を書いておくとdeallocされたかどうか確認できます。
CCLOG(@"%@ : %@", NSStringFromSelector(_cmd), self);
Layerが切り替わったのにコンソールにメッセージがでなかったら、Layerがdeallocされてないです。この場合十中八九blockのBlock_release忘れだったりします。あとはtouchDispatcherからの解除忘れ。


CCLabelTTFのフォント名には何を書けばいいか
カッコいいフォントをダウンロードしてきて、そのotfをResourceにAdd File、info.plistのFonts provided by application項目を作成し、そこにotfファイル名を追加してから気づきます。「あれ、CCLabelTTFのfontNameには何を入れればいいんだ?」実はここでかなりハマりました。結論としては以下になります。
1 MacのFontBookを開く
2 使いたいフォントを右クリック>フォントを検証
3 出てきた「フォントを検証」ウィンドウで、使いたいフォントの左側の三角をクリック
4 開かれた要素の一番上、が目的の文字列です。
わかるか!バージョンが違うからか結構違うこと書いてあるブログもあったりしてかなりハマりました。


画面の向きはきちんと設定されている?
縦向き専用ソフトを実機テストしてみたら、横向きになっちゃって画面がおかしいことに。
Supported Interface OrientationsでPortraitしか指定していないし、iOSシミュレータで傾けても画面が横向きにならないから問題無いと思っていたのです。その上、自分のiPhoneはいつも縦固定ロックを掛けているので他の人のiPhoneでやって初めて気づきました。危ない。
AppDelegate.mのshouldAutorotateToInterfaceOrientationをreturn NOにすれば解決です。


ボタン連打でも落ちないかチェックする
これも人にやってもらったら見つけた系。ボタンを連打されたらマズいかどうかや、ボタンが画面外から現れる間にクリックされても大丈夫かは常に考えておきましょう。ダメなら制御を入れる。


レイアウト・デザインの時間を取る
ゲームを作るとき、一番面倒だったのが画像収集・編集でした。そのため、先にプログラムを組んで、あとではめ込んでいく形で画像を探していました。しかし、見つかった画像を画面に並べてみると、入りきらなかったり、画面遷移がカッコよくなかったりと問題が噴出。先に組んでおいたプログラムを全面的に書き換えて対応しました。
先にきちんと画面イメージ(と遷移イメージ)を固めておかないとダメですね……。
ちょっとズレますが、今回改めて、無料素材を提供してくださる方々は本当に素晴らしい方々だなぁと思いました。


こんなところでしょうか。最初は何がなんだかわからんと思いながら四苦八苦していましたが、作り上がった現在、スッキリとコードが理解できるようになれたので嬉しいです。

結局、本は以下2冊でした。あとはネットで調べれば結構出てくるのでそれで対応しました(ほぼ英語なのが面倒ですが……)。ソフトはZwoptexとフォトショ(GIMPでも可)くらいで、Particle系は自分でコード内のパラメータいじってもどうにかなりました。

あとは、Appleの審査でドハマリしないことを祈ります。。。


Objective‐C 2.0徹底解説Objective‐C 2.0徹底解説
(2011/03)
掌田 津耶乃

商品詳細を見る


cocos2dで作る iPhone&iPadゲームプログラミングcocos2dで作る iPhone&iPadゲームプログラミング
(2011/06/24)
Steffen Itterheim

商品詳細を見る

スポンサーサイト

PageTop

百人一首ゲームiPhoneアプリ 指先百人一首 サポートページ

「指先百人一首」とは
ゲームをしながら小倉百人一首に親しむiPhoneアプリです。
「いきなり歌も競技ルールも覚えるのは取っ付きづらい。まずは百人一首の世界に慣れ親しみたい」
という方にうってつけです。

ゲーム内容
・画面上を流れてくる言葉を組み合わせて、歌を完成させていきます。
・歌を知らなくても、必要な言葉を予想してジグソーパズルのように楽しめます。
 歌の中身を予想することで、ひとつひとつの歌がしっかりと記憶に根付きます。
・歌を覚えて早くクリアできるようになると、様々な特典を得ることができます。
・1首数十秒でクリアできるので、ちょっとした空き時間にも楽しめます。

プレイ画面

スタート画面とメインメニュー。メインメニューからは、以下の4つが選べます
「百人一首」:百人一首を使ったゲームを行えます
「成績」  :ゲーム成績とそれによって得られる特典を確認できます
「図鑑」  :小倉百人一首を画像つきで閲覧できます
「設定」  :特典などの設定を行えます
sample1.jpgsample2.jpg


ステージ選択画面とゲーム画面。
ステージは10首ごとに区切られており、その中からランダムで出題されます。またゲームが進むに連れて新たなステージも現れます。
sample3.jpgsample4.jpg

sample8.jpgsample9.jpg


成績確認画面と百人一首図鑑。
各ゲームの成績は優秀良可の4段階で評価されます。良い成績を集めていくと、様々な特典が得られます。
図鑑画面では、それぞれの歌をタップすることで明治時代の百人一首の画像などを閲覧できます。
sample11.jpgsample6.jpg

※上記は開発中の画面となります。

プレイ動画


ダウンロード


いただいたレビュー
日本人なら覚えたい!!ハイクオリティだから長く楽しめる百人一首アプリを紹介!! アプリ学園様
指先百人一首 Appliv様
古き良き和の心。情感たっぷりのグラフィックで楽しく百人一首を学ぶ「指先百人一首」 日刊Appliv様

素材を提供して下さった方々に改めてお礼を申し上げます。

PageTop
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。