我是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
。