这是我使用SpriteKit的第一个项目。
我正在使用这些节点
let physicsBody = SCNPhysicsBody(type: .dynamic, shape: nil)
physicsBody.isAffectedByGravity = true
physicsBody.mass = 1
geometryNode.physicsBody = physicsBody
let force = SCNVector3(0, 9.8, 0)
let position = SCNVector3(0, 0, 0)
geometryNode.physicsBody?.applyForce(force, at: position, asImpulse: false)
scnScene.rootNode.addChildNode(geometryNode)
我的目标是看到物体卡在我的场景中心。
在SceneKit文档中读取时,SceneKit使用SI,因此Mass 1表示1 kg。
施加到该物体质心的重力在Y轴上为-9.8N(1kg * 9.8m / s ^ 2)。 将9.8N应用于质量中心应该使合力等于0,因此不会施加任何力,物体应该卡在中心,但在我的项目中,它会掉下来。
我哪里错了?
答案 0 :(得分:0)
在我看来,就像你在创建节点时应用力一样。
来自applyForce的开发者文档:
讨论这种方法可以加速身体而不会产生任何影响 角加速度。加速度适用于单个 模拟步骤(一帧)。
我认为您需要将applyForce调用移动到场景中的更新方法。这样就可以不断施加力量。