C# XNA使用鼠标移动3D对象

C# XNA使用鼠标移动3D对象,c#,3d,xna,2d,coordinates,C#,3d,Xna,2d,Coordinates,我正在XNA做一个小游戏。我有一个相机在空中,y轴上有20个像素。在它下面我有一个100x100的瓷砖网格。现在我要做的是让一个3D对象沿着网格的X轴和Z轴移动。我正在使用viewport.unproject将二维屏幕坐标转换为三维坐标,但不管我怎么尝试,它似乎都不太正确。目前,我有以下几点: Vector3 V1 = graphicsDevice.Viewport.Unproject(new Vector3(mouse.X, mouse.Y, 0f), camera.Projection, c

我正在XNA做一个小游戏。我有一个相机在空中,y轴上有20个像素。在它下面我有一个100x100的瓷砖网格。现在我要做的是让一个3D对象沿着网格的X轴和Z轴移动。我正在使用viewport.unproject将二维屏幕坐标转换为三维坐标,但不管我怎么尝试,它似乎都不太正确。目前,我有以下几点:

Vector3 V1 = graphicsDevice.Viewport.Unproject(new Vector3(mouse.X, mouse.Y, 0f), camera.Projection, camera.View, camera.World);
如果我用这个,它就会移动,但移动的幅度很小。我试着用1替换Z轴,但它移动了很大一部分(我理解为什么,只是不确定如何修复它)

我尝试过其他各种方法,比如有2个向量,1个Z为0,1个Z为1,然后减去它们/对它们进行规格化,但也不是这样

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

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