Xcode affectedByGravity值重置为true,不会保持设置为false

问题描述 投票:0回答:1

我是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)
        }
    }
}

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

swift xcode sprite-kit field gravity
1个回答
0
投票

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

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

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

© www.soinside.com 2019 - 2024. All rights reserved.