首页 文章

如何在不重置 SCNNode 位置的情况下重置 SCNNode 的 SCNPhysicsBody?

提问于
浏览
0

我有一个适用于 iOS 的 sceneKit 应用程序。我有一个附加到 SCNNode 的 SCNPhysicsBody。我将.physicsBody 设置为 nil,对 SCNNode 进行一些更改,然后将.physicsBody 设置为新的 SCNPhysicsBody 或原始 SCNPhysicsBody 的副本。在任何一种情况下,SCNNode 都将其位置重置为其初始位置。

如何重置.physicsBody 并将 SCNNode 保持在相同的位置,以便它继续沿轨迹运行?

1 回答

  • 1

    当物理影响节点位置时,其原始位置(分配给节点position属性)保持不变,演示节点位置会更改。所有转换(rotation/scale/translate)都以这种方式工作。

    所以你可以做一些像这样的伪代码:

    // 1. remember position of presentation node
    var position = node.presentation.position;
    // 2. do some changes on node, physics body, whatever
    // 3. restore position (without losing original node position)
    your_node.presentation.position = position
    // ... or apply presentation position to original position
    your_node.position = position
    

相关问题