Это моя трансформация. Я получил это на примере простой 2D камеры.
public Matrix Transform(GraphicsDevice graphicsDevice)
{
float ViewportWidth = graphicsDevice.Viewport.Width;
float ViewportHeight = graphicsDevice.Viewport.Height;
matrixTransform =
Matrix.CreateTranslation(new Vector3(-cameraPosition.X, -cameraPosition.Y, 0)) *
Matrix.CreateRotationZ(Rotation) *
Matrix.CreateScale(new Vector3(Zoom, Zoom, 0)) *
Matrix.CreateTranslation(
new Vector3(ViewportWidth * 0.5f, ViewportHeight * 0.5f, 0));
return matrixTransform;
}
Если я правильно понимаю, он допускает поворот (вращение), изменение масштаба спрайта при масштабировании и перемещение между миром и камерой для простого управления вверх, вниз, влево, вправо. Тем не менее, это не меняет глубину Z.
Но мне нужно увеличить масштаб игрового мира, а не только нарисованные спрайты. И я предполагаю, что для этого мне нужно изменить расстояние Z между камерой и матрицей мира.
Я ОЧЕНЬ НОВЫЙ в программировании и имею только простое понимание матрицы в целом. Я еще меньше понимаю, как XNA использует их в методе рисования. И до сих пор мне хочется вырвать волосы из бесплодного поиска ответов ... Мне просто нужно, чтобы мировые координаты масштабировались при увеличении, чтобы, прежде чем моя мышь с предварительным увеличением, X.60 Y.60 будет в X 0,600 Y.600 после увеличения (т. Е. Уровень масштабирования 0,1). Но моя мышь не двигалась, только мир стал больше (или уменьшился).