読者です 読者をやめる 読者になる 読者になる

夏までにiPhone アプリつくってみっか!

趣味でiPhone/Androidアプリを開発し、日々勉強した事を書いています。オープンワールド系レースゲームをUnityで開発中です。

【cocos2d】convertToWorldSpaceで失敗。座標がおかしくなった

cocos2d

今日のハマりポイントその1、converToWorldSpaceです。
あるスプライトに別のスプライトをaddChildしたとき、子スプライトのpositionプロパティが示す座標は親のスプライトの左下を原点としたローカル座業で表現されます。
当たり判定などで子スプライトの位置を知りたいときに便利なのがconvertToWorldSpaceメソッドです。これにより、親ノードを基準にした相対座標から画面の左下を基準にした絶対座標(ワールド座標)に変換できます。例えば、selfが他のスプライトの子ノードになっていてその絶対座標を知りたい場合、

CGPoint worldCoord = [self.parent convertToWorldSpace:self.position];

のように、自分の親ノードに対しconvertToWorldSpace:メッセージを投げます。

CGPoint worldCoord = [self convertToWorldSpace:self.position];

のように自分に対してメッセージを投げるとおかしな値が帰ってきてハマります。