0

ここで提供されている回答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); 
  1. なぜこのオフセットが必要なのですか?

  2. テクスチャの左下隅に、次のように (0,0) だけを指定できないのはなぜですか。

    CGPathMoveToPoint(パス、NULL、0、0);

  3. このオフセット (必要な場合) は、スプライト ノードが画面上を移動するときに変更されますか?

  4. 親シーンのアンカー ポイントが左上隅にある場合、これらのメソッドのオフセットはいくつになりますか?

4

1 に答える 1

0

参照しているオフセット変数は単なる出発点です。変数を 0,0 のような固定開始座標に簡単に置き換えることができます。

あなたの質問は物理体に関するものなので、この場合アンカーポイントは適用されません。物理ボディの 0,0 座標は、ノードの幅と高さに対して常に中央に配置されます。したがって、ノードのアンカー ポイントを変更すると、その座標がどのように中心に配置されるかに影響しますが、物理ボディには影響しません。

于 2015-03-31T15:30:36.900 に答える