1

我正在 XNA 中制作一个小游戏。我在 y 轴上 20 像素的空中有一个相机。在它下面我有一个 100x100 的瓷砖网格。现在我想做的是用鼠标沿着网格的 X 和 Z 轴移动一个 3D 对象。我正在使用 viewport.unproject 将 2D 屏幕坐标转换为 3D 坐标,但无论我尝试什么,它似乎都不太正确。目前我有这个:

Vector3 V1 = graphicsDevice.Viewport.Unproject(new Vector3(mouse.X, mouse.Y, 0f), camera.Projection, camera.View, camera.World);

如果我使用它,那么它会移动,但只会移动一小部分。我试过用 1 替换 Z 轴,但它移动了很多(我明白为什么,只是不确定如何修复它)。

我尝试了各种其他方法,例如使用 2 个向量,1 个带有 0 Z 和 1 个带有 1 在 Z 上,然后减去它们/归一化它们,但也不是这样。

我得到的最接近的结果是将结果乘以它的缩放量,但它并不完美,并且略有偏移,并且每当我滚动屏幕时都会发疯,所以我认为这也是错误的方法。

任何帮助将不胜感激,谢谢。

4

0 回答 0