拒绝重力效应SceneKit

时间:2018-03-02 21:47:08

标签: swift scenekit

这是我使用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,因此不会施加任何力,物体应该卡在中心,但在我的项目中,它会掉下来。

我哪里错了?

1 个答案:

答案 0 :(得分:0)

在我看来,就像你在创建节点时应用力一样。

来自applyForce的开发者文档:

  

讨论这种方法可以加速身体而不会产生任何影响   角加速度。加速度适用于单个   模拟步骤(一帧)。

我认为您需要将applyForce调用移动到场景中的更新方法。这样就可以不断施加力量。