我在用OpenGLES
的包装纸写2D游戏。有一个相机瞄准一堆纹理,这是游戏的精灵。用户应该能够通过在屏幕上移动手指来移动视图。问题是,相机距离纹理约100个单位,所以当手指滑过屏幕以平移相机时,由于视差效应,精灵比手指移动得更快。所以基本上,我需要将2D屏幕坐标转换为距离特定z距离的三维坐标(在我的情况下为100,因为这是纹理的距离)。将2D屏幕坐标转换为C++中的3D空间坐标?
C#
中有一些"Unproject"函数,但我使用C++
,所以我需要这个函数背后的数学。我对3D的东西非常陌生,在数学方面我非常不好,所以如果你能解释你喜欢解释给一个10岁的孩子,我会非常感激。
如果我能做到这一点,我可以以这样的速度平移相机,所以它看起来像遥远的精灵用用户的手指平移。
一些10岁的孩子数学能力很强:P – 2012-02-03 06:47:45