【发布时间】:2016-01-13 16:48:34
【问题描述】:
我正在尝试模拟一个柔软、有弹性的地板(即蹦床),这样当在某一点发出显着的冲动时,它会导致附近的物体在随机方向上反弹。
但是,我在尝试在 SceneKit 中重现此类行为时遇到了困难。
这是我迄今为止尝试过的:
- 在地面节点上调用
ground.physicsBody!.applyForce(SCNVector3Make(0, -999999, 0), atPosition: pos, impulse: true),该地面节点上附加了.Kinematic类型的物理体。 - 在连接有
.Static类型物理体的地面节点上调用ground.physicsBody!.applyForce(SCNVector3Make(0, -999999, 0), atPosition: pos, impulse: true)。 - 创建一个
SCNPhysicsField.radialGravityField(),将其附加到一个不可见的节点,将该节点定位在地板下方,最后赋予它负强度以将物体击退。
无论给定的冲动有多大,1 和 2 都不起作用。我还在地板和物体上验证了restitution > 0。请注意,虽然直接对物体施加脉冲是可行的,但我希望物理引擎根据前一个脉冲的距离和方向自动计算这些脉冲(即从蹦床上弹回的物体)(即一个人在trampoline) 而不是手动分配它们。
选项 3 在某种程度上给出了我想要的效果,但它对物体施加连续的力而不是瞬时的。
【问题讨论】:
-
我会在蹦床上测试接触,然后对所有与蹦床接触的物体施加力。