Я пишу 2D-игру, используя оболочку OpenGLES
. Есть камера, нацеленная на кучу текстур, которые являются спрайтами для игры. Пользователь должен иметь возможность перемещать изображение, перемещая пальцы по экрану. Проблема в том, что камера находится на расстоянии около 100 единиц от текстур, поэтому, когда палец перемещается по экрану для панорамирования камеры, спрайты перемещаются быстрее, чем палец из-за эффекта параллакса.
Так что, в основном, мне нужно преобразовать 2D-экранные координаты в 3D-координаты на определенном расстоянии z (в моем случае от 100, потому что это то, как далеко находятся текстуры).
В C#
есть некоторые функции "Unproject" , но я использую C++
, поэтому мне нужна математика для этой функции. Я очень плохо знаком с трехмерными вещами и очень плохо разбираюсь в математике, поэтому, если вы можете объяснить, как вы объясняете 10-летнему, это было бы очень ценно.
Если я могу это сделать, я могу панорамировать камеру с такой скоростью, чтобы казалось, что удаленные спрайты панорамируют пальцем пользователя.