我正在尝试模拟一个柔软,有弹性的地板(即蹦床),这样当一个点发出明显的冲动时,它会使附近的物体以随机方向反弹。
但是,我在SceneKit中尝试重现此类行为时遇到了困难。
以下是我到目前为止所尝试的内容:
ground.physicsBody!.applyForce(SCNVector3Make(0, -999999, 0), atPosition: pos, impulse: true)
,该节点上附有.Kinematic
类型的物理主体。ground.physicsBody!.applyForce(SCNVector3Make(0, -999999, 0), atPosition: pos, impulse: true)
,该节点上附有.Static
类型的物理主体。SCNPhysicsField.radialGravityField()
,将其附加到一个不可见的节点,将该节点放在地板下面,最后给它一个负强度,以便击退物体。无论给定的冲动有多大,1和2都不起作用。我还在地板和物体上验证了restitution > 0
。请注意,虽然直接将脉冲应用于对象工作,但我希望这些冲动(即物体从蹦床上反弹)由物理引擎根据前一冲动的距离和方向自动计算(即一个人跳过蹦床)而不是手动分配它们。
选项3在某种程度上给出了我想要的效果,但它反而对物体施加连续的力而不是瞬间。
答案 0 :(得分:-1)
静态物体不受力和碰撞影响,无法移动。 动态物体受到力和与其他物体碰撞的影响 类型。 运动物体不受力或碰撞的影响,但是 通过直接移动它们可能会导致影响动态的碰撞 体。
听起来像<[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>
类型的物理主体就是你所追求的。如果你直接改变它的位置,而不是对它施加力,运动体也可能起作用。