【问题标题】:PhysicsBody stays after translation and rotationPhysicsBody在平移和旋转后保持不变
【发布时间】:2018-03-07 19:35:27
【问题描述】:

我有一个带有立方体的节点,它代表例如一扇门。物理体类型是 .static。如果我向上动画节点,将其旋转并向下动画到物理体的原始位置保持在上部位置。 在调试模式下,phyisicsbody 的颜色首先是灰色(我假设 gray = .static),向上平移后,phyisicsbody 停留在底部。一旦我将节点旋转到上方位置,物理体就会变成绿色并向上移动到节点位置。在我将节点向下平移到原始位置后,物理体保持在上方位置。为什么会出现这种行为?这是因为类型是 .static 吗?

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

【问题讨论】:

    标签: ios swift scenekit skphysicsbody scnnode


    【解决方案1】:

    the documentation for SCNPhysicsBodyTypeStatic我们得知它是

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

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

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

    请注意,动态和物理实体 设计为仅由物理模拟移动或根本不移动。 无论此限制如何,您都可以使用此方法移动它们, 但要以性能为代价。

    【讨论】:

    • 仅供参考...在节点的物理体上调用 resetTransform,如下所示:node.physicsBody?.resetTransform()
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-23
    • 1970-01-01
    • 2019-07-30
    • 1970-01-01
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多