Мне нужно повернуть модель, которую можно свободно вращать, на точные градусы, независимо от того, сколько раз она была повернута.
У меня есть UIPanGestureRecognizer, который свободно вращает 3D-модель вокруг оси Y. Однако я изо всех сил пытаюсь заставить его зафиксироваться в целочисленной степени, когда панорамирование остановлено, и я изо всех сил пытаюсь узнать его вращение в градусах от 0 до 359.
let translation = recognizer.translation(in: self.view)
var newAngleY = Double(translation.x) * (Double.pi) / 180.0
newAngleY += self.currentAngle
self.shipNode?.eulerAngles.y = Float(newAngleY)
if (recognizer.state == .ended)
{
self.currentAngle = newAngleY
}
Он вращается свободно, но все попытки блокировки с точностью до ближайшего точного градуса и возможность «знать» его угол вращения в диапазоне от 0 до 359.
Я знаю это:
let degrees = newAngleY * ( 180 / Double.pi)
И я знаю, что если градусов > 360, то -= 360 (псевдокод)
Однако, пока UIPanGestureRecognizer делает свое дело, эти проверки, кажется, терпят неудачу, и я не знаю, почему. Это потому, что, когда он все еще панорамируется, вы не можете редактировать частные свойства ViewController?