问题:我正在制作一个具有视差效果的 2D 游戏,但我使用的是 3D 空间,所以我没有模拟视差,而是让透视投影为我处理它。现在的问题是我有自己的游戏编辑器来设计关卡,在这个编辑器中我只使用图像并为每一层设置一个 Z 值。但是,我希望这些图层在游戏引擎中完全按照我在游戏编辑器中设置的方式显示,简而言之,我希望透视投影做视差,但不改变它们的比例或偏移/位置。
明显的解决方案是将它们按比例放大并抵消它们,但问题是如何计算它们的偏移量?通过缩放,我尝试了 object->Scale(object.Z/view.Z) 并且似乎将它们恢复到实际大小,但它们的位置仍然是错误的。我尝试了 object->setPositionX(object->getPosition().x*(object.Z/view.Z)) 并且似乎是对齐的,除了它们似乎都发生了变化。
我尝试过不投影并尝试从世界矩阵转换为屏幕矩阵并找到一些比率等等。
这怎么能以优雅/数学的方式完成?