SpriteKit で放射状の重力フィールドを使用しようとすると問題が発生します
同じ種類のオブジェクトは必要ありません (categoryBitMask で定義されているように、互いに引き付けられます)。
これが私がそれを行う方法です:
struct PhyscisCategory {
static let None : UInt32 = 0
static let All : UInt32 = UInt32.max
static let Star : UInt32 = 0b1
static let Planet : UInt32 = 0b10
}
<....>
Planet1.physicsBody!.categoryBitMask = PhyscisCategory.Planet
Planet1.physicsBody!.fieldBitMask = PhyscisCategory.Star
Planet2.physicsBody!.categoryBitMask = PhyscisCategory.Planet
Planet2.physicsBody!.fieldBitMask = PhyscisCategory.Star
何を試しても、惑星は常に相互に引き付けられます (fieldBitMask を 0 に設定した場合を除きますが、もちろん、Star にも引き付けられなくなります)。この2行のコードは、星の重力場だけが惑星に影響を与えることを期待しています...
ドキュメントから:
"fieldBitMask : 物理フィールドのどのカテゴリがこの物理体に力を加えることができるかを定義するマスク。物理体が SKFieldNode オブジェクトの領域内にある場合、そのフィールド ノードの categoryBitMask プロパティは、論理演算を実行することによって、この物理体の fieldBitMask プロパティと比較されます。 AND 演算。結果がゼロ以外の値の場合、フィールド ノードの効果が物理ボディに適用されます。」
私は何か間違っていますか?