我正在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,然后减去它们/归一化它们,但那也不是。
我得到的最接近的是将结果乘以它缩放的数量,但它并不完美,并且稍微偏移并且每当我滚动屏幕时都会发疯,所以我认为这也是错误的方法。
非常感谢任何帮助,谢谢。