[iPhone][cocos2d] CCSprite の 表示されている位置を取得したい

タッチイベントなどで「スプライトの範囲知りたい!」ってことは多発すると思う。

で自分でそう思ったときに調べたメモ

とりあえずググっった

CCSpriteの 表示されている位置はどうやって得るのだろうかとテキトーにグーグルで検索したらプログラマメモ2: cocos2dです。タッチして表示したオブジェクトを動かすというコードを試している最中です。にたどり着いた

そこに載ってたコードが以下のもの

- (CGRect) rectForSprite:(CCSprite *)sprite{

  float h = [sprite contentSize].height;
  float w = [sprite contentSize].width;
  float x = sprite.position.x - w/2;
  float y = sprite.position.y - h/2;

  CGRect rect = CGRectMake(x,y,w,h);

  return rect;
}

でもこれじゃ困るよね

上のコードだと anchoPoint == CGPointMake(0.5f, 0.5f) の時だけしか使えないため anchorPoint を 変更できない。ということでテキトーに書き換えた。

// スプライトのCGRectを取得
CGRect CGRectWithSprite (CCSprite *sprite) {
  return CGRectMake(
    sprite.position.x - sprite.contentSize.width * sprite.anchorPoint.x,
    sprite.position.y - sprite.contentSize.height * sprite.anchorPoint.y,
    sprite.contentSize.width,
    sprite.contentSize.height
  );
}

これでオーケーね。

※ここで得られるCGRectはEAGLViewの座標系の値なので注意。ようする画面の左下がゼロ座標。

Share
関連記事