У меня вопрос о перемещении камеры вверх/вниз и влево/вправо без вращения в SceneKit с помощью жесты панорамирования. Я нашел много дискуссий о повороте камеры, которую я использую для своего вращения. Но я не могу понять, как перемещать камеру, не вращая ее. Я пытаюсь подражать, разрешает CameraControl, где пользователь может панорамировать двумя пальцами, чтобы изменить положение камеры x и y. Вот код для моего распознавателя жестов, любая помощь будет принята с благодарностью, спасибо!Перемещение камеры в Scenekit
func handlePan(gestureRecognize: UIPanGestureRecognizer) {
let numberOfTouches = gestureRecognize.numberOfTouches
var translation = gestureRecognize.translation(in: gestureRecognize.view!)
var widthRatio = Float(translation.x)/Float(gestureRecognize.view!.frame.size.width) + lastWidthRatio
var heightRatio = Float(translation.y)/Float(gestureRecognize.view!.frame.size.height) + lastHeightRatio
if (numberOfTouches==fingersNeededToPan) {
self.cameraOrbit.eulerAngles.y = Float(-2 * M_PI) * widthRatio
self.cameraOrbit.eulerAngles.x = Float(-M_PI) * heightRatio
//for final check on fingers number
lastFingersNumber = fingersNeededToPan
}
if numberOfTouches == 2 {
self.cameraNode.position.x = -(Float(translation.x)/Float(gestureRecognize.view!.frame.size.width) + lastWidthRatio)
self.cameraNode.position.y = -(Float(translation.y)/Float(gestureRecognize.view!.frame.size.height) + lastHeightRatio)
}
lastFingersNumber = (numberOfTouches>0 ? numberOfTouches : lastFingersNumber)
if (gestureRecognize.state == .ended && lastFingersNumber==fingersNeededToPan) {
lastWidthRatio = widthRatio
lastHeightRatio = heightRatio
}
}
Чтобы уточнить: вы хотите двигаться вбок, не меняя угол камеры? Например. Я смотрю на северо-восток, и я шагаю в сторону (северо-запад влево, на юго-восток вправо), продолжая смотреть на северо-восток? –
Да, я просто пытаюсь переместить камеру влево/вправо или вверх/вниз без вращения, как это возможно с помощью allowCameraControl, извините за путаницу @HalMueller –