Swift 3, SceneKit: В моей игре у меня есть узел SCNSphere в центре экрана. Сфера падает под действием силы тяжести на узел SCNBox, и скорость SCNVector3 (0,6,0) применяется к нему, как только он сталкивается с коробкой.Перетащите узел SceneKit вдоль оси X при сохранении скорости? Swift 3
Создана новая коробка и движется вперед (z +) к моей камере и к сфере. Сфера поднимается, пики, а затем падает вниз (под действием силы тяжести) к новой коробке, и когда она сталкивается с новым ящиком, к ней применяется скорость SCNVector (0,6,0). Этот процесс повторяется непрерывно. Сфера, которая многократно отскакивает в новом приближающемся поле, в основном.
Вместо одной коробки, однако, будет три коробки подряд. Все ящики начинаются перед узлом сферы и двигаются к нему, когда они созданы, коробки помещаются в ряд, один слева от сферы, один непосредственно перед сферой (средний), а третий - право на сферу.
Я хочу, чтобы протащить палец по экрану и перенести сферу так, чтобы она могла приземлиться в левом и правом блоках. Пока я перетаскиваю, я не хочу, чтобы y-скорость или y-позиция были изменены вообще. Я просто хочу, чтобы x-позиция моего сферического узла отражала реальную x-позицию моего пальца относительно экрана. Я также не хочу, чтобы сфера узла меняла местоположение на основе одного касания.
Например, если положение сферы находится в SCNVector3 (2,0,0), и если пользователь нажимает около SCNVector3 (-2,0,0), я не хочу, чтобы сфера «телепортировалась» туда, где пользователь постучал. Я хочу, чтобы пользователь перетащил сферу из своей последней позиции.
func handlePan(recognizer: UIPanGestureRecognizer) {
let sceneView = self.view as! SCNView
sceneView.delegate = self
sceneView.scene = scene
let trans:SCNVector3 = sceneView.unprojectPoint(SCNVector3Zero)
let pos:SCNVector3 = player.presentation.position
let newPos = (trans.x) + (pos.x)
player.position.x = newPos
}
Я добавил код в нижнюю часть вопроса. Функция handlePan не вызывается, и я не уверен, что код внутри функции будет работать. Что мне нужно изменить? –
Обновлен код, показывающий добавление распознавателя жестов и переход от 2D-экранных координат к 3D-системе координат мира вашей сцены. –