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

时间:2017-05-26 11:11:50

标签: ios scenekit scnnode

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

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

1 个答案:

答案 0 :(得分:0)

当物理影响节点位置时,其原始位置(分配给节点position属性)保持不变,presentation node位置会发生变化。所有变换(旋转/缩放/平移)都以这种方式工作。

所以你可以做类似这种伪代码的事情:

// 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