拒绝重力效应SceneKit

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

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

我哪里错了?

swift scenekit
1个回答
0
投票

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

来自applyForce上的开发人员文档:

讨论这种方法可以加速身体,而不会给身体带来任何角加速度。加速度应用于单个模拟步骤(一帧)。

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

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