0

你好,我正在尝试创建一个类似于我的世界的库存,它在屏幕上的不同插槽中呈现项目和块。我有一个块的顶点数组,我想以特定大小在特定屏幕坐标处绘制它。

顺便说一句,这是我目前正在使用的代码,它正在工作,但我无法确定一个特定的位置或大小:

 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);

谢谢您的帮助!

4

1 回答 1

0

您的矩阵需要交换。您希望单位矩阵位于末尾。矩阵翻译从右到左解释。matrix.identity 参考摄像机视图的原点。如果你有 view.lookat(matrix.identity * myMatrix); 如果您依赖对象位于视口原点,则 myMatrix 无法正确解释。

这是一个很好的参考。

http://www.riemers.net/eng/Tutorials/XNA/Csharp/Series2D/Coll_Detection_Matrices.php

于 2012-06-03T09:04:58.597 回答