helllo,我正在尝试创建一个类似Minecraft的库存,它会在不同的插槽中呈现屏幕上的项目和块。我有一个块的顶点数组,我想在特定大小的特定屏幕坐标处绘制它。
顺便说一句,这是我目前正在使用的代码,它正在运行,但我无法确定特定位置或大小: Vector2 coord = new Vector2(-4, 0); //Screen coord.
int distance = 20; //Distance of the camera from the block(control the size).
BlockRenderer.basicTextureEffect.View = Matrix.Identity * Matrix.CreateLookAt(new Vector3(-distance, distance * 0.6f, -distance), Vector3.One / 2, Vector3.Up) * Matrix.CreateTranslation(coord.X, coord.Y, 0);
BlockRenderer.basicTextureEffect.CurrentTechnique.Passes[0].Apply();
graphics.GraphicsDevice.DrawUserPrimitives(PrimitiveType.TriangleList, vertex, 0, vertex.Length / 3);
谢谢你的帮助!
答案 0 :(得分:0)
您的矩阵需要交换。您希望身份矩阵在最后。矩阵翻译从右到左解释。 matrix.identity是指摄像机视图的原点。如果你有view.lookat(matrix.identity * myMatrix);如果您依赖于您的对象位于视口原点,则myMatrix无法正确解释。
这是一个很好的参考。
http://www.riemers.net/eng/Tutorials/XNA/Csharp/Series2D/Coll_Detection_Matrices.php