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 に答える