2

スプライト キットで作成しているマリオネットがあり、シーンに配置しています。SKNode のサブクラスである Marionette クラスを作成しました。このクラスのインスタンスを作成するときに、多数の SKSpriteNode を相互に追加します。これにより、どのように機能するかがわかります (不要な行は省略しています)。

[self addChild:self.head];
[self.head addChild:self.chest];
[self.chest addChild:self.leftLeg];
[self.chest addChild:self.rightLeg];
[self.leftLeg addChild:self.leftFoot];
[self.rightLeg addChild:self.rightFoot];

それで、これをした後、マリオネットが現れました。これらの接続のそれぞれに SKPhysicsJointPin を追加したいと考えています。コードは次のようになります。

self.chestPin = [SKPhysicsJointPin jointWithBodyA:self.marionette.head.physicsBody bodyB:self.marionette.chest.physicsBody anchor:self.marionette.chest.anchorPoint];

最初は、Marionette クラス内にすべてのピンを設定するだけでよいと思っていましたが、うまくいきません (思い出すと EXC_BAD_ACCESS が返されます)。関節を追加する前に、全体の SKScene にマリオネットを追加する必要があることがわかりました。

これは理にかなっていると思いますが、Marionette クラスですべてをセットアップし、シーンに 2 行のコードを貼り付けて新しい Marionette を作成し、addChild 彼をシーン。

現状では、私の SKScene サブクラスには、すべてのピンを追加するための一連のコードがあり、シーンに収まるようには感じられません。考え?

4

1 に答える 1

3

anchorPointアンカーとして使用したくない。anchorPoint プロパティは、0 から 1 の範囲の係数で、テクスチャがスプライトの位置からオフセットされる方法に影響します。つまり、デフォルトの 0.5/0.5 は、スプライトのテクスチャをスプライトの位置の中央に配置します。つまりanchorPoint、位置ではなく、それを使用すると、ボディとヘッドのジョイントが画面の左下隅に固定されます。

代わりに、胸または頭の位置をアンカーとして使用するか、2 つの間のポイントを使用してみてください。

于 2013-10-28T16:40:57.100 に答える