SceneKit弹力楼

时间:2015-10-15 09:37:06

标签: swift scenekit

我正在尝试模拟一个柔软,有弹性的地板(即蹦床),这样当一个点发出明显的冲动时,它会使附近的物体以随机方向反弹。

但是,我在SceneKit中尝试重现此类行为时遇到了困难。

以下是我到目前为止所尝试的内容:

  1. 在地面节点上调用ground.physicsBody!.applyForce(SCNVector3Make(0, -999999, 0), atPosition: pos, impulse: true),该节点上附有.Kinematic类型的物理主体。
  2. 在地面节点上调用ground.physicsBody!.applyForce(SCNVector3Make(0, -999999, 0), atPosition: pos, impulse: true),该节点上附有.Static类型的物理主体。
  3. 创建一个SCNPhysicsField.radialGravityField(),将其附加到一个不可见的节点,将该节点放在地板下面,最后给它一个负强度,以便击退物体。
  4. 无论给定的冲动有多大,1和2都不起作用。我还在地板和物体上验证了restitution > 0。请注意,虽然直接将脉冲应用于对象工作,但我希望这些冲动(即物体从蹦床上反弹)由物理引擎根据前一冲动的距离和方向自动计算(即一个人跳过蹦床)而不是手动分配它们。

    选项3在某种程度上给出了我想要的效果,但它反而对物体施加连续的力而不是瞬间。

1 个答案:

答案 0 :(得分:-1)

来自documentation;

  

静态物体不受力和碰撞影响,无法移动。   动态物体受到力和与其他物体碰撞的影响   类型。 运动物体不受力或碰撞的影响,但是   通过直接移动它们可能会导致影响动态的碰撞   体。

听起来像<[Thu Oct 15 10:47:48.797562 2015] [:error] [pid 14100] 2015-10-15 10:47:48,797 INFO [ckan.lib.base] /ckan-admin render time 0.085 seconds> 类型的物理主体就是你所追求的。如果你直接改变它的位置,而不是对它施加力,运动体也可能起作用。