PhysicsBody在翻译和旋转后停留

时间:2018-03-07 19:35:28

标签: ios swift scenekit skphysicsbody scnnode

我有一个附有立方体的节点,例如一扇门。物理体类型是.static。如果我将节点设置为动画,则将其旋转并将其设置为动画,将其设置为物理体的原始位置,使其保持在较高位置。 在调试模式中,phyisics体的颜色首先是灰色的(我认为灰色= .static),在平移之后,物理体停留在底部。一旦我将节点旋转到较高位置,物理体就会变为绿色并向上移动到节点位置。在将节点平移到原始位置后,物理体保持在上部位置。为什么会这样?这是因为类型是.static吗?

我知道如果我将物理体类型设置为.kinematic(在调试时显示为红色)模式,它可以按预期工作。物理学家适应翻译和旋转。但是使用.static类型我可以在fps下降之前放置更多的对象而不是.dynamic。

1 个答案:

答案 0 :(得分:1)

the documentation for SCNPhysicsBodyTypeStatic我们了解到它是

  

不受力或碰撞影响且无法移动的物理体

但是,您可以使用resetTransform明确告诉引擎该节点已移动并且物理主体需要更新:

  

如果更改带有附加节点的节点的位置或方向   静态或动态物理体,之后调用此方法以确保   物理模拟结合了变化。你不需要打电话   这种运动学方法。

     

请注意动态和物理机构   被设计为仅通过物理模拟移动或根本不移动。   无论此限制如何,您都可以使用此方法移动它们,   但是以牺牲性能为代价。