2013年09月30日

敵キャラの作成再開

先週ようやくcocos2d-xへの移植が終わり無事iPhoneで動くようになったので、今週からまた敵キャラ作成を再開しています。案外ちょこちょこと修正しないといけないところが出てきたので1匹しかできていませんが。

あとGitHubのリポジトリも作成しなおしました。cocos2d for iPhoneのやつはtoritoma_iphoneに名前を変えて、cocos2d-xの方を前と同じtoritomaで登録しています。(commit履歴

あれこれこまごまと修正していますが数が多いので一部抜粋。

9月22日、README$B$NFbMF$rJT=8!#(B

ただの文字化けです。アプリ開発とはまったく関係ありませんが、.vimrcにfencsの設定が問題でした。 vim使わない人やgitをターミナルから使わない人にはまったくどうでもいい話です。

ここのサイトのコメント欄に何か解決法みたいなのが書かれていますがめんどくさいのでfencsを削除してしまいました。

にわかvimmerですみません。

9月23日、タイトル画面のメニュー項目作成時の引数間違い修正。

関数に渡す引数の順番を間違えていました。Objective-Cを始めたときはいちいち引数に変数名とは別にラベルを付けないといけないのが面倒に思ったのですが、こういうミスがあると案外有用なのかなと思ったりもしました。

もっともObjective-CのメソッドのラベルはIDEがないとやってられない感じがしますが、IDE前提だとちゃんと引数の候補とか表示してくれるので、この手のミスは防止できそうな気もしますが。

9月24日、utf-8文字列の1文字切り出し処理でmblen()を使用しないように修正。

私の場合、文字列表示をCCLabelTTFを使用せずに自前の画像を使って表示するようにしています。で、表示する文字列を1文字ずつに分解して対応する画像を表示するわけですが、Objective-CのときにはNSStringのメソッドを使って文字列の分割を行っていました。当然C++だとNSStringは使用することができないので、mblen()という関数で1文字のバイト数を調べて1文字を切り出すような処理を作っていました。ところが、この関数はロケールの設定に依存するのでsetlocale()でロケールの設定をしてやらないといけないのですが、なぜかiPhoneの実機だとロケールの変更ができませんでした。

原因がわからないのでロケールの設定に依存しない方法を検討。幸いutf-8は2進表記にして先頭の1の数がバイト数を表しているということで比較的簡単に実装できました。 ちなみに、先頭が0から始まるのが1byte文字、先頭が10から始まるのがマルチバイト文字の2byte目以降、先頭が11から始まるのがマルチバイト文字の1byte目で1の並んでいる数がバイト数で最大6byteとのことです。

9月29日、ハチの巣の動作処理を実装。

ようやく敵キャラの作成。ハチの巣はハチをどんどん呼んできながら、5-way、全方位弾、地面から画面全体に弾発射を切り替えながら攻撃してきます。とりあえずスクリーンショットを撮ってみましたがわけわからない感じになりました。

ちなみに背景が1面のやつのままなのでハチの巣が宙に浮いている感じですが、最終的にはちゃんとしたいです。

ScreenShot_1.png ScreenShot_2.png ScreenShot_3.png

9月29日、マルチタッチを有効化。

Appcontroller.mmに[__glView setMultipleTouchEnabled:YES];を追加しただけです。 ちゃんとマルチタッチに対応する場合はCCTouchDispatcher::addTargetedDelegate()addStandardDelegate()に変えないといけないのかもですが、とりとまの場合は何かと何かを同時にタッチした時に処理を変えるというものではなく、左手で自機を動かしながら右手でシールドボタンを押すとかいうふうに別々に処理を行うので基本はシングルタッチの処理でOKです。

posted by かねだ at 00:23| Comment(0) | 開発記録 | このブログの読者になる | 更新情報をチェックする

2013年09月23日

ようやく起動するところまでできた

ここ2週間くらいcocos2d for iPhoneからcocos2d-xに移行すべく、ひたすらObjective-CをC++へと変換していく作業をしていましたが、ようやくコンパイルが通って動くところまで行きました。

ちょっとつまずいた所を書いていってみたいと思います。

テクスチャアトラス表示でとなりの画像がはみ出して表示される

フォントの画像とラベルの枠の画像を1個にまとめてテクスチャアトラスとして使っているのですが、表示している枠の画像の隣の部分がはみ出して表示されて線が出てしまっていました。

元のテクスチャアトラスの画像がこれ。

Font_1.png

これを使って画面を表示するとこんなふうに線が出てしまいます。

ScreenShot_1.png

ネットで検索するとCC_FIX_ARTIFACTS_BY_STRECHING_TEXELを1に設定するといいと書いてあったので、よくわからないけど試しにやってみました。その結果がコレ。

ScreenShot_2.png

ぱっと見、大丈夫そうに見えるのですが、よく見ると文字の形が変わっています。若干拡大されつつ、左と上の1列文のドットがなくなっているような。

しょうがないのでCC_FIX_ARTIFACTS_BY_STRECHING_TEXELを元に戻して、別の方法を考えることに。

隣の画像がはみ出してくるんなら画像と画像の間に隙間を入れてみればいいんじゃないかと試した結果がこちら。

ScreenShot_3.png

透過色なら影響が出ないことを期待したのですが、きっちりと隙間がはみ出して表示されてしまっています。

そんなわけで最終的に隙間部分がはみ出してきても問題がないように端の部分をコピーして隙間に埋めるようにしてみました。ちなみに手で作るのが面倒だったので画像を加工するプログラムを作ってみました(gist)。どうでもいいですけどgistってコメントで入れたのが全文タイトルになるのが邪魔くさいですね。

Font_2.png

これでなんとか思ったとおりの画像が表示されるようにはなったのですが、なんかあんまりスマートなやり方とは思えないのでもっと良いやり方があるような気もします。

ScreenShot_4.png


シミュレータで動かすと重たい

なぜかcocos2d-xのプロジェクトをシミュレータで動かすと非常に動作が重いです。上の何もないタイトル画面でさえ、ぎりぎり60fpsを保っている状態です。ゲーム画面になると30fpsを切ってしまいます。

最初シミュレータだけで発生すると思っていなかったので、cocos2d-xの使い方が何か間違っているのかと思い1日くらい悩んでました。

原因はよくわからないですが、サンプルのHello Worldでも同じ現象が起こるし、実機で動くなら問題ないのでとりあえず放置することにしました。


とりあえず動くようにはなったのですが、まだ微妙にボタンがうまく反応しなかったり画像がずれて表示されたりするので、そのへんの調整を今週中に解決して、さっさと敵キャラ作成の作業に戻りたいものです。

ラベル:cocos2d とりとま
posted by かねだ at 00:18| Comment(0) | 開発記録 | このブログの読者になる | 更新情報をチェックする

2013年09月15日

iOS7対応、ほとんどやることなかったけど

今週はもうすぐiOS7がリリースされるということで傾撃のiOS7対応をすることにしました。

最初、ダウンロードしたiOS7 GM Seedをインストールする方法がわからずに普通にiOS6を2回ほど入れなおしてしまいました。option押しながらRestore押せばいいんですね。

何も変えなくても大丈夫かなと思ってたのですが、ステータスバーの消し方が変わっているのでそれに対応しなければならず。最初からiPhoneに入れていたやつを起動したときはステータスバーがちゃんと消えていたので、もしかするとアップデートしなければ今ステータスバーを非表示にしてるものは消えたままになってくれるのかもしれませんが、せっかくなのでアップデートしてみることにしました。

ちなみにiOS7でステータスバーを消すにはinfo.plistに UIViewControllerBasedStatusBarAppearanceを追加して値をNOにしておけば消えます。

あるいは、RootViewControllerに

- (BOOL)prefersStatusBarHidden{ 
    return YES;
}

を追加でもいけるようです。

あとはアイコンのサイズが変わっているのでちょっと調整。単に周りの隙間を増やしただけですが。

それとAdMobのライブラリをアップデートしないといけなかったのをずっと放置していたのでそれも合わせて実施。というかこれをしないとUDIDを取得してるのでリジェクトされてしまいます。

そういえば、どうでもいいですがXcodeでArchiveをクリックしようとして間違えてAnalyzeを実行したら普通にバグが見つかりました。リリースする前に一度くらいAnalyzeしとけってことですかね。

ラベル:傾撃
posted by かねだ at 22:45| Comment(0) | 開発記録 | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。