使用重力使SCNNode掉落?

zum*_*zum 4 ios scenekit

我有一个SceneKit设置,其中有一个Sphere,它被设置为动态体.

我能够运行应用程序并看到球体落在静态车身底板上.

我想要做的是设置场景,以便最初不会下降.

然后当一个函数运行时我想让sfere掉线.

什么是突然制作场景的正确逻辑/步骤(可能是按下按钮或其他东西)掉落球体?

我也尝试将球体设置为质量0然后将质量设置为100,但它不会导致掉落...

ric*_*ter 9

弥撒不能控制某事物的下降速度.这在现实世界中是正确的,但在采用快捷方式而不是模拟现实世界物理学的每个细节的模拟中更是如此.(可悲的是,iOS设备仍然没有CPU能力来解释地球的旋转参考系,你的球体和任何特别靠近它的身体之间的范德瓦尔斯吸引力,它将三角形原子保持在一起的强大力量,等等.在SceneKit中,重力只是特定方向上的恒定加速度.

将质量设置为零并将其切换为其他东西会干扰静态/运动和动态体之间的区别......所以不要这样做.

正如@mnuages所指出的那样,当您希望物理体完全受物理影响或不受物理影响时,可以在球体中添加/删除物理体.

但是如果你想保留球体物理体的原因还有其他原因 - 比如在它开始下降之前允许其他物体与它发生碰撞?您可以使用以下几种方法:

当其他东西击中它时,这两个都将阻止球体移动.如果你想让球被撞倒,但不受重力的影响,最好的办法就是切换物理场的场景引力:

  1. 设置scene.physicsWorld.gravitySCNVector3Zero.
  2. SCNPhysicsField带有linearGravityField构造函数的created 添加到场景中,并设置它directionstrength获得所需的重力行为.
  3. categoryBitMask在球体和重力场上设置s,使得场影响其他物体而不影响球体.

无论您使用哪种方法,都可以在想要为球体"转动重力"时更改它们:减少damping,重置velocityFactor或更改球体或重力场categoryBitMask.