cocos2dのconvertToWorldSpaceでハマった
公開日:
:
最終更新日:2013/11/04
cocos2d
ゲームのコードでキャラの当たり判定をデバッグ用に表示しようとして、convertToWorldSpaceでハマってしまった。
convertToWorldSpace のリファレンスを見ると、
- (CGPoint) convertToWorldSpace: (CGPoint) nodePoint
converts local coordinate to world space
Since:
v0.7.1
とある。ローカル座標系の点を、ワールド座標系の点に変換するメソッドだ。
以下がハマっていたときのコード。
-(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
関連記事
- PREV
- 人工視覚で視力を回復
- NEXT
- 紅白歌合戦と初音ミク(動画あり)