问题描述
我有一个简单的sceneKit场景,中间有一个radialGravity节点:
let gravityNode = SCNNode()
let radialGravityField = SCNPhysicsField.radialGravity()
gravityNode.physicsField = radialGravityField
gravityNode.position = SCNVector3Make(0,0)
radialGravityField.strength = 0.5 // Same issue with 9.8
scene.rootNode.addChildNode(gravityNode)
然后我在场景中添加了几个具有物理体的盒子:
let Box = SCNBox(width: 0.5,height: 0.5,length: 0.5,chamferRadius: CGFloat(0))
let BoxNode = SCNNode(geometry: Box)
BoxNode.geometry!.firstMaterial?.diffuse.contents = UIColor.red
BoxNode.position=<based on clicked location on screen>
BoxNode.physicsBody = SCNPhysicsBody(type: .dynamic,shape: nil)
BoxNode.physicsBody?.mass=1
scene.rootNode.addChildNode(BoxNode)
然而,正如您所看到的,这些盒子被中心重力节点很好地吸引,但是一旦它们到达它就会立即被排斥,而我希望它们停留在中心。
怎么会?
解决方法
您需要在径向重力场的相同位置添加一个具有一定尺寸的静态物理体。您所看到的是完全预期的行为,因为那里没有具有物理实体的物体。(例如,一个半径为 0 的行星)。