Для получения значения уровня телефона, я бы рекомендовал использовать self.sceneView.pointOfView?.orientation
(если вам нужно только одно из 3 значений из этого SCNVector, просто добавьте .x
, .y
или .z
наконец).
Например, если я держу свой телефон в вертикальном положении, значение self.sceneView.pointOfView?.orientation.x
будет приблизительно равно 0. Аналогичным образом, удерживая его в перевернутом положении, вы получите значение около 1 или -1.
Вы можете использовать эти значения, чтобы выяснить, насколько выровнен телефон по всем трем осям, и преобразовать их в градусы.
Я бы порекомендовал поместить следующий код в проект и запустить егочерез кнопку или цикл, который постоянно его запускает, и наблюдайте, как меняются значения.Надеюсь, это поможет.(Обратите внимание, что sceneView
заменяется любым именем вашего ARKit SceneView.)
print(self.sceneView.pointOfView?.orientation.x)
print(self.sceneView.pointOfView?.orientation.y)
print(self.sceneView.pointOfView?.orientation.z)