swift - XcodeaffectedByGravity 值重置为 true 并且不会保持设置为 false

标签 swift xcode sprite-kit field gravity

我对 Xcode Games 还很陌生,但我一直在尝试使用引力场。我能够创建字段,使主体与它们交互等,但是,当我以编程方式创建 SKSpriteNode 时,第二次我给它一个物理主体,无论我将 AffectedByGravity 或 fieldBitMask 值设置为什么,它总是会被吸引到场景中的径向场。

这是我认为相关的代码:

 func createNewBody(x: CGFloat, y: CGFloat){
    let newBody = SKSpriteNode()
    newBody.texture = SKTexture(image: #imageLiteral(resourceName: "Circle_Burgundy_Solid.svg"))
    newBody.size = CGSize(width: 10, height: 10)
    newBody.position.x = x
    newBody.position.y = y
    newBody.physicsBody = SKPhysicsBody(circleOfRadius: newBody.size.width/2)
    newBody.physicsBody?.affectedByGravity = false
    self.addChild(newBody)
}

此代码是从 TouchBegan 方法调用的:

 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    for touch in touches{
        if touch == touches.first{
            createNewBody(x: touch.location(in: self).x, y: touch.location(in: self).y)
        }
    }
}

我不知道为什么这不起作用。任何想法都会很棒!谢谢!

最佳答案

在您的代码中,您使用了局部变量newBody,您确定该节点在update中可用吗?

affectedByGravity 旨在定义与物理世界重力的相互作用,与任何其他领域无关。

如果要定义给定节点相对于字段的行为,则需要相应地设置节点的 fieldBitMask 和字段的 categoryBitMask

关于swift - XcodeaffectedByGravity 值重置为 true 并且不会保持设置为 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49074981/

相关文章:

ios - 自定义表格 View 单元格中的 UITextField。点击单元格/文本字段时显示选取器 View

ios swift 2 如何用 json 数据填充 uipickerview

objective-c - 如何将字典数据添加到数组中?

swift - 如何随着时间的推移或分数更新时增加重力?

ios - 如何从任何 ViewController 访问 CustomNavigationController 的方法?

swift - 计算 UITextField 的字符因 NSException 崩溃

sprite-kit - Swift 和 SpriteKit : I am not able to create an SKPhysicsJoint

ios - 如何在 Swift 中创建一个使用 "self"的全局变量

ios - 在iOS的Xcode中,如何比较文本字段和两个字符串?

swift - 在终端中运行 Swift 构建导致 "Platform Path"错误