範囲が矩形の場合はsprite(ここでは_oni)を作った後に、以下のコードで指定する。
_oni.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:rect];
わかんないで、上の例で100,380からの縦横64ピクセルの範囲を指定したら、Spriteの原点から右に100、上に380もずれた画面外から始まる縦横64ピクセルの範囲になってしまい、Spriteの位置に当たり判定が付かずにだいぶ迷ってしまった。
このため、正しいrectの設定は以下のコードになる。
CGRect rect = CGRectMake(-(_oni.frame.size.width / 2), -(_oni.frame.size.height / 2), _oni.frame.size.width, _oni.frame.size.height);
原点が0,0ということになるので、width、heightそれぞれの半分の値をマイナスにしてrectのx、yにしてるわけね。
width、heightはそのまま。
考えてみりゃ、位置を変えるSpriteに親オブジェクトのSKSceneの絶対座標なんか使うわけないんだけど、引っかかったので書いておく。'`,、('∀`) '`,、
0 件のコメント:
コメントを投稿