【问题标题】:Rejecting gravity effect SceneKit拒绝重力效果SceneKit
【发布时间】:2018-08-11 04:27:17
【问题描述】:

这是我第一个使用 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,因此质量 1 表示 1 公斤。

施加在该物体质心上的重力在 Y 轴上为 -9.8N ( 1kg * 9.8 m/s^2 )。 向质心施加 9.8N 应使合力等于 0,因此不会施加任何力,并且物体应该卡在中心,但在我的项目中,它会掉下来。

我哪里错了?

【问题讨论】:

    标签: swift scenekit


    【解决方案1】:

    在我看来,您在创建节点时施加了力。

    来自applyForce 上的开发者文档:

    讨论 这种方法可以加速身体而不给予任何 对它的角加速度。加速度适用于单个 模拟步骤(一帧)。

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

    【讨论】:

    • 这绝对是解决方案。它帮助我理解了为什么我应该在`renderer(_ renderer: SCNSceneRenderer, updateAtTime time: TimeInterval)`中移动那行代码
    猜你喜欢
    • 2021-08-25
    • 1970-01-01
    • 2019-03-24
    • 2014-12-03
    • 2016-07-16
    • 1970-01-01
    • 2018-12-25
    • 2016-01-13
    • 2018-08-19
    相关资源
    最近更新 更多