スプライトboundingBox
の座標は、スプライトの親の座標系に対して常に相対的です。親を移動、回転、またはスケーリングしても、子は同じboundingBox
. それを別の座標系に変換できます。origin
親が移動しただけの場合 (回転またはスケーリングされていない場合)、のを変更するだけで、ワールド座標系に変換できますboundingBox
。
CGRect boundingBox = child.boundingBox;
boundingBox.origin = [child.parent convertToWorldSpace:boundingBox.origin];
NSLog(@"%@", NSStringFromCGRect(boundingBox));
親がスケーリングされている場合、それに応じて子の boundingBox のサイズが変更されます。親が回転すると、子の境界ボックスのスケールと縦横比の両方が変更される可能性があるため、非常に複雑になります。boundigBox でタッチが発生したかどうかをテストするだけの場合は、タッチ位置を子の親の座標系に変換します。
CGPoint touchLocation = [child.parent convertToNodeSpace:touchWorldLocation]
現在child.boundingBox
、 とtouchLocation
は同じ座標系にあります。