Apple のスプライト キットを使用してゲームを作成しています。現在SKShapeNode
、次のようなオブジェクトを描画しています。
私の実際のスプライトは丸みを帯びたエッジを持っていますが、簡単にするために、最初にこの形状ですべてを機能させようとしています。私はスプライトを完全にうまく描くことができます。ただし、スプライトをカバーする物理ボディの作成に問題があります。スプライトが表面に沿ってどこでも衝突を認識できるようにしたいので、暗い灰色の領域だけをカバーする物理体が必要です。また、スプライトをフォースとインパルスに反応させたいので、ボリュームベースの物理ボディが必要です。
CGPathRef
私の最初のアイデアは、スプライトのイメージを作成するために使用したものと同じものを単純に使用し、それをbodyWithPolygonFromPath
メソッドに渡して、対応する物理ボディを作成することでした。私の形状は凸状ではないため、これは機能しないことがわかりました。
bodyWithBodies
ですから、適切な形状の物理ボディを作成するために使用できるはずだと考えています。3 つの長方形の物理体 (灰色の領域の左側を覆うもの、上部を覆うもの、右側を覆うもの) を 3 つ作成し、それらを使用して、スプライトの灰色の領域を覆う領域を持つ物理体を 1 つ作成します。これを使用して:
mySprite.physicsbody = [SKPhysicsBody bodyWithBodies:@[body1, body2, body3]];
ただし、私が抱えている主な問題は、bodyWithBodies
メソッドに渡される配列に入る個々のボディを正しく配置することです。上記の方法を使用することにより、これらの物理体が相互に配置されている場所を制御する方法が明らかにありません。その結果、3 つすべての物理体が の中心で互いに重なり合っていmySprite
ます。
メソッドに物理体を渡す前に、配列内の物理体を互いに相対的にどの程度正確に配置することになっていますbodyWithBodies
か?