【问题标题】:choose what objects radial gravity fields affect swift选择哪些物体径向重力场影响迅速
【发布时间】:2014-12-09 22:23:25
【问题描述】:

我正在开发一个带有 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)

【问题讨论】:

  • 你目前有什么代码
  • (把它放在你的问题中)
  • 如何以更易读的方式发布代码?
  • 复制粘贴到您的问题中,然后选择代码并按 ctrl-k
  • 请发布用于初始化这些对象的代码,以及设置位掩码值。

标签: swift sprite-kit skfieldnode


【解决方案1】:

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

为重力场设置类别位掩码

gravityField1.categoryBitMask = gravityField1Category
gravityField2.categoryBitMask = gravityField2Category

设置位掩码,使每颗恒星都受另一颗恒星的重力场影响,但不受自己的影响

star1.physicsBody?.fieldBitMask = gravityField2Category
star2.physicsBody?.fieldBitMask = gravityField1Category

设置位掩码,使行星受到两个重力场的影响

planet.physicsBody?.fieldBitMask = gravityField1Category | gravityField2Category

【讨论】:

  • gravityField1Category 等中的值是什么样的?
  • @Confused 那些是类别值,例如 0x1
  • 好的,谢谢。我认为。这可能不太清楚。他们看起来很混乱。哪些符合 AND 的标准?
  • @Confused 您需要设置物理体的fieldBitMask 以匹配字段节点的类别位掩码。例如,如果您希望行星节点受重力场影响,请将行星物理体的 fieldBitMask 设置为与重力场的 categoryBitMask 相同的值(例如,0x1
  • 谢谢。这些数字有点令人困惑。但是“逻辑与”的“逻辑”更加令人困惑。和说“等于”是一样的吗?
猜你喜欢
  • 1970-01-01
  • 2014-09-18
  • 2015-10-14
  • 1970-01-01
  • 1970-01-01
  • 2015-10-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多