2013年8月31日土曜日

iPhone で Box2D を使う

iPhone で、物理演算を行うためのライブラリ(?) Box2D を動かす所までを調査してみた。
前回は、ソースの取得で苦労した訳だけど、要る物さえ取れてしまえば後は楽か・・・と思ったが甘かった。

今回は、以下のサイトを参考にさせて頂いた。

UIKit で物理演算エンジンを使用する
http://qiita.com/shu223/items/8a1d064411a2a122983d

ここでは、自分が行った点を補足として残す。

まず、1.のファイルの取得については、前回の記事で書いたとおり SVN にプロキシ設定を行って取得した。

次に、4.の必要ファイルの拡張子を cpp から mm に変更する所。
これは、ターミナルを使い対象(Box2D/Box2Dの中)の各フォルダごとに変換を行った。
for nm in *.cpp; do[Enter]
> mv $nm ${nm%.cpp}.mm;[Enter]
> done[Enter]
上記が、フォルダの中の cpp ファイルを取得して mm に置き換えるスクリプトである。
フォルダ数も知れていたので、手作業で行ったが、結構神経使ったので、もう少し改良した物を使った方が良いかもしれない(シェルに明るければ簡単にできるんだろうな)。

作業が前後するかも知れないが、拡張子を変換してから XCode に放り込んだ方が良さそうだ。
放り込んだ時点で XCode では、警告が沢山出た。

warning: Missing file:/job/hoge/trunk/hoge/Classes/Generic/UI/UICustom/NSCViewVisitor.h is missing from working copy

(警告メッセージが違うかもしれん。。。)
このメッセージは何かというと、SVN 管理のファイルが変更になっているぞ!と言う物らしい。

内容的に、無視しても良いけど、気になるので(目障り)、監視ファイルを削除することにした。

コピーしたフォルダ内に「.svn」という隠しファイルがあるので、削除すればこの警告は消える。

これで、中間地点となる5.のヘッダーファイルをインポートしてビルドをする部分までは行ける。
と、思ったがエラーが出る。

「Lexical or Preprocessor ‘cassert’ file not found」

い、意味不明だ・・・
調べたところ、関係する拡張子が「mm」でないとダメらしい。

上記で変換してるんだけど・・・と思ったが、これの影響範囲は関連するプロジェクト全てのファイルが対象の事だった。
つまり、「ViewController.m」 も 「ViewController.mm」 にしなくては行けなかった。
これで、ビルドまで通るようになる。

ここまで来ると、あとはそのまま実装していけば完了するはず。
本当にコピペとなるためにコードは省くが、ビルドして実行すると、箱がポロポロ落ちてくるサンプルが作れる。

今の段階では、これで終了したが、ゲームなりなんなりに使うためには、もう少し使い方を勉強する必要がある。
先が長そうだったので、余裕が出たときに再度取りかかろうと思う。

0 件のコメント:

コメントを投稿