Я пытаюсь заставить SCNNode летать над самолетом, а затем уронить его.
Чтобы сделать это плавающим:
floatingNode.position.z += 0.4 // It's rotated π/2 over x axis
planeNode.addChildNode(floatingNode)
sceneView.scene.rootNode.addChildNode(planeNode)
Я знаю, что это на самом деле не плавает, я просто изменяю свою позицию.
Чтобы сделать это:
floatingNode.physicsBody.angularVelocityFactor = SCNVector3(0, 0, 0)
floatingNode.physicsBody.angularVelocityFactor.physicsBody.restitution = 0
floatingNode.physicsBody = SCNPhysicsBody.init(type: .dynamic, shape: SCNPhysicsShape.init(node: modelNode, options: nil))
Но он не опускается до самого дна, между плавающим узлом и плоскостью есть пробел. Чтобы это исправить, после падения мне нужно сделать:
floatingNode.physicsBody = nil
floatingNode.position.z -= 0.4
Мне нужно установить для PhysicsBody значение nil, потому что я хочу, чтобы оно снова всплыло.
Есть ли способ заставить плавающий узел SCNNode плавать поверх другого, не меняя его положение вручную?