2012-06-03 2 views
0

helllo, я пытаюсь создать инвентарь, подобный майклафру, который отображает элементы и блоки на экране в разных слотах. У меня есть массив вершин блока, и я хочу нарисовать его с помощью специальных экранных координат со специальным размером.xna дисплей 3d-объекты как 2d на фиксированном экране координаты

Кстати, это код, который я сейчас использую, она работает, но я не могу deteminate в spesific положения или размера:

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

Ваши матрицы должны быть заменены. Вы хотите, чтобы идентификационная матрица была в конце. Матричные переводы интерпретируются справа налево. Значения matrix.identity относятся к источнику просмотра камер. Если у вас есть view.lookat (matrix.identity * myMatrix); myMatrix не интерпретируется правильно, если вы зависите от своего объекта, который находится в начале просмотра.

Heres хорошая ссылка.

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

+0

TNX за помощью, но как я могу deteminate, какой размер и положение будет нарисован объект? – SharkDX

Смежные вопросы