Ограничение позволяет свойству SCNViewCameraControl просто сжимать / масштабировать жест
У меня есть сцена, где после некоторого события я хочу, чтобы пользователь мог взаимодействовать с камерой, но только для pinch/zoom gesture
, Я хотел бы включить allowsCameraControl
Свойство SCNView для этой цели.
Когда вы включаете allowsCameraControl
все жесты включены, некоторые из которых не очень интуитивны в использовании и не просты в управлении. Мне также нужно иметь доступный жест для чего-то другого, чем управление камерой.
Есть ли способ ограничить управление камерой только pinch/zoom gesture
? В документации я нашел SCNCameraController
класс, но его описание крайне скудно, и не выяснили, как его использовать.
1 ответ
allowCameraControl - классная штука для общих вещей, но согласованные, редкие документы. Вероятно, лучше всего реализовать собственное управление камерой. Это не так уж и плохо - добавьте узлы cameraEye и cameraFocus, а затем установите с помощью SCNLookAtConstraint. Что-то вроде этого:
func setView()
{
cameraEye.constraints = []
cameraEye.position = SCNVector3(x: 0, y: 10, z: 12)
cameraFocus.position = SCNVector3Make(0, 0, 0)
let vConstraint = SCNLookAtConstraint(target: cameraFocus)
vConstraint.isGimbalLockEnabled = true
cameraEye.constraints = [vConstraint]
}
Оттуда - увеличение / уменьшение - это просто изменение положения cameraFocus.s, в зависимости от того, насколько сложным вы хотите. Надеюсь, это поможет!