2.5D游戏相机
我希望有人能像我5岁时向我解释这个问题,因为我一直在努力奋斗了几个小时,根本无法理解我在做什么错。 我Camera为我的2.5D游戏写了一个课程。目的是支持这样的世界和屏幕空间: 相机在右边是黑色的东西。该图像中+ Z轴朝上,-Z朝下。如您所见,世界空间和屏幕空间的左上角都有(0,0)。 我开始编写一些单元测试,以证明我的相机可以正常工作,而这正是事情开始变得奇怪的地方。我的测试在世界,视图和屏幕空间中绘制坐标。最终,我将使用图像比较来断言它们是正确的,但是现在我的测试仅显示结果。 渲染逻辑用于Camera.ViewMatrix将世界空间转换为视图空间,并将Camera.WorldPointToScreen世界空间转换为屏幕空间。 这是一个示例测试: [Fact] public void foo() { var camera = new Camera(new Viewport(0, 0, 250, 100)); DrawingVisual worldRender; DrawingVisual viewRender; DrawingVisual screenRender; this.Render(camera, out worldRender, out viewRender, out screenRender, new Vector3(30, 0, 0), new Vector3(30, 40, 0)); this.ShowRenders(camera, worldRender, viewRender, screenRender); } 这是我运行此测试时弹出的内容: 尽管我怀疑z轴正在进入屏幕而不是朝向查看器,但世界空间看起来还不错。 视图空间让我完全困惑。我期望摄影机位于(0,0)上方并朝场景中心看。相反,z轴似乎绕错了方向,并且相机位于我期望的相反角上! …