选择径向重力场影响swift的对象

选择径向重力场影响swift的对象,swift,sprite-kit,skfieldnode,Swift,Sprite Kit,Skfieldnode,我正在使用swift和sprite工具包进行一个Xcode项目,我想知道如何选择受径向重力场影响的对象。我现在有两颗恒星和一些行星,每颗恒星都有一个径向重力场。问题是恒星被吸引到自己的重力场。我怎样才能使每个引力场只影响一颗恒星和所有行星,而不影响它所跟随的恒星呢。我知道它与categoryBitMask和/或fieldBitMask有关,但我不知道具体是如何实现的。提前谢谢。下面是恒星和重力场的代码。我不希望重力场影响到那颗恒星 class star: SKSpriteNode { requ

我正在使用swift和sprite工具包进行一个Xcode项目,我想知道如何选择受径向重力场影响的对象。我现在有两颗恒星和一些行星,每颗恒星都有一个径向重力场。问题是恒星被吸引到自己的重力场。我怎样才能使每个引力场只影响一颗恒星和所有行星,而不影响它所跟随的恒星呢。我知道它与categoryBitMask和/或fieldBitMask有关,但我不知道具体是如何实现的。提前谢谢。下面是恒星和重力场的代码。我不希望重力场影响到那颗恒星

class star: SKSpriteNode {

required init?(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")

 }

init(imageNamed: String){
    let imageTexture = SKTexture(imageNamed: imageNamed)

    super.init(texture: imageTexture, color: nil, size: imageTexture.size())

    let radius = self.size.width / 2

    self.physicsBody = SKPhysicsBody(circleOfRadius: radius )
    physicsBody?.dynamic = false

}
}

    let star1 = star(imageNamed: "star")
    let gravityField1 = SKFieldNode.radialGravityField()

    star1.position = CGPoint(x: self.size.width / 4, y: self.size.height / 2)
    star1.physicsBody?.friction = 0
    star1.physicsBody?.linearDamping = 0
    star1.physicsBody?.angularDamping = 0
    star1.physicsBody?.angularVelocity = 0.2
    star1.zPosition = 1
    star1.name = "star"
    addChild(star1)


    gravityField1.enabled = true;
    gravityField1.position = CGPoint(x: self.size.width / 4, y: self.size.height / 2)
    gravityField1.strength = Float(pow(radius1, 2)) * pow(10, -3)

    addChild(gravityField1)

下面是如何设置类别和字段位掩码的示例:

设置重力场的类别位掩码

gravityField1.categoryBitMask = gravityField1Category
gravityField2.categoryBitMask = gravityField2Category
设置位掩码,使每颗恒星受另一颗恒星的重力场影响,而不受其自身重力场的影响

star1.physicsBody?.fieldBitMask = gravityField2Category
star2.physicsBody?.fieldBitMask = gravityField1Category
设置位掩码,使行星受两个重力场的影响

planet.physicsBody?.fieldBitMask = gravityField1Category | gravityField2Category

您当前获得了什么代码(请将其放入问题中)我如何以更可读的方式发布代码?复制粘贴到您的问题中,然后选择代码并按ctrl-K键。请发布用于初始化这些对象的代码,以及设置位掩码值。GravityField1类别中的值是什么,等等?这些是类别值,例如0x1Ok,谢谢。我想。这可能不太清楚。他们看起来很困惑。哪些符合被和?困惑的标准?您需要设置物理主体的
字段位掩码
,以匹配字段节点的类别位掩码。例如,如果您想让行星节点受到重力场的影响,请将行星的物理体的
fieldBitMask
设置为相同的值(例如,0x1Thank you。这些数字有点让人费解。但“逻辑与”的“逻辑”更让人费解。这是否与“等于”相同?