2017-02-14 19 views
0

Я не могу найти ответ на этот недавний, а не объективный c. Я использую SceneKit с быстрым и Im, пытаясь переместить мой персональный узел туда, где пользователь нажимает. Ive попытался использовать результат хита в касаниях, но мой узел на полу находится в (0, 0, 0), поэтому бесполезно, когда он попадает на то, что будет в большинстве случаев, когда пользователь нажимает на экран. Я собирался вытащить свою старую книгу исчисления, но потом я понял, что понятия не имею, как конвертировать, когда местоположение касания всегда относительно позиции экрана, которая движется вокруг сцены. Если бы кто-нибудь мог показать мне ссылку или дать совет, я был бы признателен.В SceneKit с быстрой попыткой перемещения персонажа прикосновением

ответ

0

Для преобразования между координатами представления и сцены вы можете использовать методы projectPoint и unprojectPoint рендера сцены, обратитесь к документации на https://developer.apple.com/reference/scenekit/scnscenerenderer

Они позволят вам превратить баллы в любом случае между 3D системы вашей сцены и координатой 2D система зрения отображаются в координату.

обновления

то, что вы хотите сделать, это вызвать unproject функции дважды, один раз с z, установленным в ноль (с координатами представления x/y), и один раз с ним устанавливается один. Это даст вам 2 очка в 3D-мире, представьте себе линию между ними, и вам нужно будет выяснить, где эта линия пересекает вашу плоскость пола. Это будет то, что вам нужно.

+0

Спасибо, я вижу документацию сейчас. Я все еще запутался, почему аргумент SCNVector3? Я пытаюсь перейти из CGPoint, который я получаю от касаний, начал SCNVector3. – anthony

+0

fun unprojectPoint (SCNVector3) – anthony

+0

Это потому, что точка на экране переходит к строке в 3D-мире, вы устанавливаете значение от 0 до 1, чтобы указать, где вдоль линии в 3D-мире должна быть точка (между ближними и далеко отсекающие плоскости). Подробную информацию см. В документации, и вы можете задать более конкретный вопрос о переполнении стека, если вам нужна помощь с кодом. Если мой ответ помог, пожалуйста, отметьте его как принято, спасибо :) – simonWasHere

 Смежные вопросы

  • Нет связанных вопросов^_^