Плитка XNA с экрана - PullRequest
       4

Плитка XNA с экрана

2 голосов
/ 16 августа 2011

У меня есть игра на основе плиток, которая находится в полуизометрическом виде, созданном преобразованием.Плитки создаются с помощью Texture2d, визуализированного на трехмерной поверхности.

Изображение карты: http://balancedcms.com/Capture.PNG

Я использую следующий код для преобразования:

    View = Matrix.CreateLookAt(new Vector3(0, -1.1f, 1.6f), new Vector3(0, 0, 0), new Vector3(0, 53, 0));
    Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.Pi - 2.4f, 4.0f / 3.0f, 1, 500);

    quadEffect = new BasicEffect(device);

    quadEffect.World = Matrix.Identity;
    quadEffect.View = View;
    quadEffect.Projection = Projection;
    quadEffect.TextureEnabled = true;

    quad = new Quad(new Vector3(0, 0, 0), Vector3.Backward, Vector3.Up, 3, 3);

Моя проблема возникает, когда я пытаюсь получить текущую плитку, которую яНависаю мышь.У меня есть мышь X и Y, однако я не могу понять, как преобразовать эти экранные координаты в плитку X и Y. Плитки имеют размер 128 на 128 пикселей;однако после преобразования камеры они уменьшаются сверху и увеличиваются снизу (для создания изометрического вида)

Я попытался преобразовать мышь X и Y с помощью одной матрицы проекции.Однако это не сработало.Я думаю, что это из-за того, что матрица вида не принимается во внимание ... пример ниже:

Vector3.Transform(new Vector3(Mouse.GetState().X, Mouse.GetState().Y, 0), Projection);

Это изображение может предоставить больше информации ... также показывает часы, которые я потратил на этовыход: http://balancedcms.com/1111.png

1 Ответ

0 голосов
/ 16 августа 2011

Матрица проекции контролирует, как 3D-изображения отображаются на 2D-экране, но ничего не говорится о том, где расположена камера или в каком направлении она направлена. Возможно, вы захотите хотя бы использовать матрицу вида с матрицей проекции, чтобы получитьправильное преобразование точки в точку мира.

На самом деле я не могу вспомнить математику для таких преобразований, но у xna есть беспроектный метод , на который вы, возможно, захотите взглянуть:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...