ここで提供されている回答SpriteKit の SKPhysicsBody とポリゴン ヘルパー ツールを使用して、スプライト ノードの物理ボディのポリゴンを作成しています。
しかし、CGPathMoveToPoint/CGPathAddLinetoPoint メソッドのオフセット パラメータは紛らわしいです (Apple のドキュメントにも参照が見つかりません)。
そこでスクリプトによって生成されたコードでは、offsetX と offsetY は次のように定義されています。
CGFloat offsetX = sprite.frame.size.width * sprite.anchorPoint.x;
CGFloat offsetY = sprite.frame.size.height * sprite.anchorPoint.y;
デモンストレーション用に提供されている gif では、次のようになっています。
CGFloat offsetX = sprite.frame.size.width/2;
CGFloat offsetY = sprite.frame.size.height/2;
これらのオフセットは両方とも、次のような CGPathMoveToPoint/CGPathAddLinetoPoint メソッドのパラメーターを修正するために使用されます。
CGPathMoveToPoint(path, NULL, 0 - offsetX, 0 - offsetY); (for the bottom left corner of the texture)
CGPathAddLineToPoint(path, NULL, 11 - offsetX, 0 - offsetY);
なぜこのオフセットが必要なのですか?
テクスチャの左下隅に、次のように (0,0) だけを指定できないのはなぜですか。
CGPathMoveToPoint(パス、NULL、0、0);
このオフセット (必要な場合) は、スプライト ノードが画面上を移動するときに変更されますか?
親シーンのアンカー ポイントが左上隅にある場合、これらのメソッドのオフセットはいくつになりますか?