例如,我的主平面是矩形(0,0,10000,10000)。
我的屏幕平面(即虚拟位置)是矩形(1000,1000,1920,1080)。
我的Texture2D在主平面上是矩形(1500,1200,200,100)。
我需要将Texture2D坐标转换为我的屏幕平面。我尝试使用Matrix.Translate但没有成功。 我必须在屏幕平面上得到Texture2D = Rectangle(500,200,200,100)。
答案 0 :(得分:1)
为了将Texture2D从(1500,1200)变为(500,200),您必须使用(-1000,-1000)的平移,它们是屏幕平面坐标的倒数。在代码中,您的翻译将是这样的
Matrix transform = Matrix.CreateTranslation(-screenPlane.x, -screenPlane.y, 0);
理论上,你想要移动纹理,就像你的相机开启(0,0)而不是(1000,1000)。你必须将纹理移动(-1000,-1000)才能这样做。
检查网络上的2D相机类,总是有用了解相机如何工作:) 例如:http://www.david-amador.com/2009/10/xna-camera-2d-with-zoom-and-rotation/