cocos2dのconvertToWorldSpaceでハマった

公開日: : 最終更新日:2013/11/04 cocos2d

記事内に広告を含む場合があります。記事内で紹介する商品を購入することで、当サイトに売り上げの一部が還元されることがあります。

ゲームのコードでキャラの当たり判定をデバッグ用に表示しようとして、convertToWorldSpaceでハマってしまった。

convertToWorldSpace のリファレンスを見ると、

  • (CGPoint) convertToWorldSpace: (CGPoint) nodePoint

converts local coordinate to world space

Since:

v0.7.1

cocos2d for iPhone 0.7.3: CocosNode Class Reference

とある。ローカル座標系の点を、ワールド座標系の点に変換するメソッドだ。

以下がハマっていたときのコード。


-(void) drawPlayer {
float radius = [self.ball texture].contentSize.width * 0.4f;
float angle = 0;
int numSegments = 10;
bool drawLineToCenter = NO;
glColor4f(0.0f, 1.0f, 0.0f, 1.0f);

CGPoint point = [self.player convertToWorldSpace:self.player.position];
ccDrawCircle(point, radius, angle, numSegments, drawLineToCenter);
}

小一時間ほどハマり、ようやくこの部分が原因だということを突き止めた。


CGPoint point = [self.player convertToWorldSpace:self.player.position];

意図している動作にするには、これを以下のように書き換える必要がある。


CGPoint point = [self.player.parent convertToWorldSpace:self.player.position];

self.player.position は、self.player 内ではなく、self.player.parent 内における位置を示している。なので、convertToWorldSpace を使用するときには先ほど挙げたように self.player ではなく、self.player.parent を渡す必要がある。

最近 cocos2d をいじるのが楽しいです。cocos2dを使っている方、iPhoneでのゲーム制作に興味のある方、twitterでぜひぜひ情報交換しましょう!

「拡張現実ライフ」の中の人 (akio0911) on Twitter

関連記事

サンフランシスコのピア39にあるチャウダーズでクラムチャウダーを食す!

lolipop アップルの開発者向けイベント「WWDC2014」

ミスドのカルピスドーナツとカルピスポンデリングを食べてみた!

ミスドで期間限定のカルピスコラボ商品「カルピスドーナツ」と「カルピ

十三カレー計画で牛すじカレーネギのせを食す!(大阪・十三)

「iPhoneアプリ開発キャンプ@大阪」のランチで、十三カレー計画

大阪・難波の加寿屋 法善寺でかすうどんを食す。ランチタイムはおにぎり2個まで無料!

大阪・難波の加寿屋 法善寺 (かすうどん KASUYA)で、かす

ライブドアブログで運営していた「あきお商店」を「卵は世界である」に改名しました

少し前からライブドアブログで「あきお商店」というブログをやって

→もっと見る

PAGE TOP ↑