Я реализовал методы для перемещения объекта, находящегося поверх поверхности, с помощью UIPanGesture и техники raycasting относительно плоскости... для определения новой координаты объекта при перетаскивании.
Но что, если объект находится в воздухе, вы не можете использовать raycast против какой-либо плоскости. Я заметил, что приложение GIPHY World позволяет переключаться между двумя режимами:
- Обнаружение плоскости (где объекты разрешено размещать ТОЛЬКО на поверхности)
- Свободный режим (где объекты можно размещать ТОЛЬКО плавающими перед камерой)
Когда у вас есть плавающий объект, пользователь может перетаскивать экран в любом направлении, и объект будет следовать правильно, даже если вы физически двигаетесь. Я заметил, что вам не нужно прикасаться к объекту, чтобы переместить его, но пока вы перетаскиваете его по экрану.
Интересно, можете ли вы, ребята, предложить какой-нибудь код для преобразования перетаскивания 2D-экрана в то, как движется 3D-объект. Бывший.
- Если вы находитесь перед объектом, перетаскивание на экране ВВЕРХ/ВНИЗ приведет к перемещению объекта по координате Z... близко или далеко.
- Но если вы физически переместитесь в сторону... и снова перетащите экран ВВЕРХ/ВНИЗ, объект теперь перемещается по координате X. <--- Как они это делают ?
Вот видео как это работает. https://youtu.be/16iMMuwjfIc
Здесь вы можете увидеть, что я пробовал, основываясь на ответе @Vollan ниже. Вы можете видеть, что репозиционирование не работает, как приложение GiPHY. https://youtu.be/ZoWj6WRBY58