swift - 选择哪些物体径向重力场会影响 swift

标签 swift sprite-kit skfieldnode

我正在使用 swift 和 sprite 套件开发一个 Xcode 项目,我想知道如何选择哪些对象受径向重力场的影响。我目前有两颗恒星和一些行星,每颗恒星后面都有一个径向重力场。问题是恒星会被它们自己的引力场吸引。我怎样才能使每个重力场只影响一颗恒星和所有行星,而不影响它跟随的恒星。我知道它与 categoryBitMask 和/或 fieldBitMask 有关系,但我不知 Prop 体是怎么回事。提前致谢。下面是恒星和重力场的代码。我不希望重力场影响那颗恒星。

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

关于swift - 选择哪些物体径向重力场会影响 swift,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27390010/

相关文章:

objective-c - SpriteKit - 如何使 applyImpuse 始终具有相同的力量

ios - 在 Sprite Kit 中混合颜色

ios - 使用未解析的标识符 'AVPlayer'

ios - UIButton 宽度的自动布局问题

ios - 自定义控件的 Storyboard 中出现奇怪的错误

ios - NSArray 到 NSData 编码格式化

swift - 需要左右按钮在 x 轴上移动 Sprite

sprite-kit - SpriteKit SKFieldNode : Why can't I move the field during runtime?

ios - 磁场影响不需要的 Sprite