Вы можете достичь этого, используя следующие строки кода:
shadowsPlane.geometry?.materials.first?.writesToDepthBuffer = true
Выберите одно из двух свойств экземпляра для .colorBufferWriteMask
:
shadowsPlane.geometry?.materials.first?.colorBufferWriteMask = .alpha
// OR:
shadowsPlane.geometry?.materials.first?.colorBufferWriteMask = SCNColorMask(rawValue: 0)
Установите порядок рендеринга для ваших объектов, например:
shadowsPlane.renderingOrder = -1 // the nearest layer
shadowsPlane.renderingOrder = 100 // the farthest layer
И, конечно же, используйте соответствующее .lightingModel
свойство экземпляра:
shadowsPlane.geometry?.materials.first?.lightingModel = .constant
Помните, что между двумя самолетами будет небольшой воздушный зазор:
shadowsPlane.position = SCNVector3(x: 0, y: 0, z: 0)
floorPlane.position = SCNVector3(x: 0, y: -0.01, z: 0)