【Xcode5】Xcodeの使い方 SpriteKit 編 Vol5 〜 座標に関して〜

SpriteKit5回目の投稿です。

今回は座標についてです。

通常のUIKitによる開発とSpriteKitによる開発では座標の考え方が少し変わってきます。
大きな違いとして、原点(0,0)の位置とy軸の向きです。

f:id:kitano_ow:20140103003837p:plain

例えば以下のようなコードを書いた場合

SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithColor:[SKColor greenColor] size:CGSizeMake(40,40)];
sprite.position = CGPointMake(20,20);
[self addChild:sprite];

f:id:kitano_ow:20140103003952p:plain

このような形になります。

SpriteNodeなどのNodeを位置を指定して配置する場合は、
positionを使いますが、通常Scene上にNodeを配置する場合は、位置は中心が基準となります。
f:id:kitano_ow:20140103004743p:plain

ただ初期状態では中心が基準となりますが、その基準については
変更が可能です。

//左下を基準にする
sprite.anchorPoint = CGPointMake(0,0);

anchorPointがその基準位置を管理するもので、

CGPointMake(0.5f,0.5f)     //中央  初期値
CGPointMake(0.0f,0.0f)     //左下
CGPointMake(1.0f,1.0f)     //右上
CGPointMake(1.0f,0.0f)     //右下
CGPointMake(0.0f,1.0f)     //左上

となります。

上記のCGPointMake(0.0f,0.0f)とした場合であれば、
f:id:kitano_ow:20140103005138p:plain

このような表示となります。
※ただし、SKPhysicsBodyのbodyWithRectangleOfSizeなどは、中心を基準とした形で
physicsBodyを生成するため、表示とphysicsBodyが合致しない事もあるため、
anchorPointは初期状態のままが良さげです。