Archive for 1月, 2011

ipbox2d_212_01.jpg

Box2D for iPhoneを2.1.2にバージョンアップ

ここ2回ほどBox2DのiPhone版をいじっていたのですが、バージョンが2.0.2と古いので色々と入れ替えて2.1.2にバージョンアップしました。

ipbox2d_212_01

ダウンロード(Box2D_2.1.2.iPhone.zip)

※XCodeのプロジェクト設定(.xcodeproj)は「Build」→「iPhone」→「Box2D」フォルダの中にあります。

 

少々手間取りましたが、終わってみるとそんなにたいした作業でもありません。

PC版Box2D 2.1.2のソースコードを落としてきて、Box2D本体の部分とTest関連のソースコードを入れ替え、プロジェクトにドラッグ&ドロップして更新します。元のiPhone版ではBox2D本体のソースコードが「Sourceフォルダ」に入っていたのですが、これをBox2Dという名前に変えます。さらにプロジェクト設定を開いて「ヘッダ検索パス」に「../../../」を設定します。

ipbox2d_212_02

後はiPhoneTest.h/mm、GLES-Render.h/mm、iPhoneTestEntries.mmを、PC版のソースコードとにらめっこしながら編集して完成です。

ついでに「Box2DOrientation.h」というファイルを足し、その中の「BOX2DVIEW_LANDSCAPE」という#defineマクロによって縦画面固定と横画面固定を切り替えできるようにしました。

実機テストも問題なくパス。これを元に作ったアプリがApp Storeで売れるかどうかはわかりませんが……(テーブルビュー周りで使ってるメソッドが古い的な警告が表示されていたので、そこは引っかかりそうです)。

ipbox2d_yoko0.jpg

iPhone向けBox2Dを横向きにする

iPhone向けBox2Dの画面は縦向き固定なので、これを横向き固定に変更します。ちょっとハマリそうだなとは思っていましたが、予想通りハマリました。

ipbox2d_yoko0

横向きで起動するだけなら、plistにUISupportedInterfaceOrientationsを追加して向きを横に限定すればいいのですが……。

ipbox2d_yoko1

これだけだと縦画面のまんま横向きになります。

ipbox2d_yoko2

Appleのガイドラインなどを見ると、この後UIViewControllerにShouldRotate~といったメソッドを書くように説明されているのですが、このプロジェクトにはビューコントローラがありません。

結局、こんなになったりこんなになったりと、試行錯誤が続き……

ipbox2d_yoko3ipbox2d_yoko4

数時間かかってようやくこの記事の先頭の画像にたどり着いたわけです。画面を回すだけのことでこんなに苦労するのはイヤですねぇ。

でも、これでようやくiPhoneでまともな2Dゲームが作れる環境が手に入ったようです。後はC++で書けるわけですからね(ちなみにOpenGL ESはObjective-CではなくC言語の文法で使います)。

 

では、途中経過は省いて、どうやればいいのかだけを説明します。

Continue reading “iPhone向けBox2Dを横向きにする” »

ipbox2d_0.jpg

iPhone用のBox2Dを調べる

前回はKarakuri Frameworkを使って、C++でiPhone用のアプリを開発できるという話をしましたが、「iPhone用のBox2Dサンプル」を使ってもほぼC++だけでアプリ開発ができることがわかりました。幸いWindows上でのBox2Dを触った経験があるので、そのときに作ったサンプルを移植することを目指してみます。

今回はまず、iPhone版Box2Dがどういう構造になっているのかを分析していきます。

iPhone版Box2Dはここからダウンロードできます。「Download GNU tarball」というリンクをクリックしてください。Box2Dのバージョンは2.0.2と若干古いのですが、画面表示にOpenGL ESを使い、タッチ操作や加速度センサーにも対応しているので、ゲームの基本形として使うことができます。

http://box2d.svn.sourceforge.net/viewvc/box2d/trunk/

ダウンロードしたファイルを解凍し、その中の「Box2D.xcoredeproj」ファイルを探してXCodeで開き、SDKバージョンなどの更新を行ってビルドすると次のようなプログラムが表示されます。一覧から実行したいテストを選んで実行。ドラッグや傾きで操作できます。ダブルタップで一覧に戻りますが、うまく戻らないこともありました。その辺はどうせ使わないので気にしなくてもいいでしょう。

ipbox2d_0ipbox2d_1

Continue reading “iPhone用のBox2Dを調べる” »