C# 二维等轴测相机矩阵

C# 二维等轴测相机矩阵,c#,matrix,xna,transformation,isometric,C#,Matrix,Xna,Transformation,Isometric,我用笛卡尔坐标系设计了一个小游戏关卡。我有一个camera类,我想使用此矩阵将所有点从笛卡尔空间转换为等轴测空间: public Matrix GetTransformation() { _mTransform = Matrix.CreateTranslation(-Position.X, -Position.Y, 0); return _mTransform; } [cos(45),sin(45)] [-sin(45)

我用笛卡尔坐标系设计了一个小游戏关卡。我有一个camera类,我想使用此矩阵将所有点从笛卡尔空间转换为等轴测空间:

public Matrix GetTransformation()
    {
        _mTransform =
            Matrix.CreateTranslation(-Position.X, -Position.Y, 0);

        return _mTransform;
    }
[cos(45),sin(45)]

[-sin(45),cos(45)]

在纸上,将任何向量乘以矩阵成功地将该向量在第一次旋转后放入等距空间

现在,我只能使用以下矩阵根据摄像机位置获得要绘制的标高:

public Matrix GetTransformation()
    {
        _mTransform =
            Matrix.CreateTranslation(-Position.X, -Position.Y, 0);

        return _mTransform;
    }
我感到困惑的是我上面列出的矩阵在哪里符合这个等式

CameraIso2D不接受任何参数,但这里是Draw函数

public void Draw(SpriteBatch sb)
    {
        // Start drawing from this GameLayer
        sb.Begin(
            SpriteSortMode.FrontToBack,
            BlendState.AlphaBlend,
            null,
            null,
            null,
            null,
            _transformation);

        // Draw all contained objects
        foreach (DrawableGameObject dgo in _drawableGameObjects)
            dgo.Draw(sb);

        // End drawing from this GameLayer
        sb.End();
    }

_转换是矩阵_mTransform从CameraIso2D返回,每次更新

我用两个矩阵解决了这个问题。第一个矩阵使用常规摄影机变换并传递到spriteBatch.Begin作为变换矩阵。对于等轴测变换矩阵,我使用matrix.CreateRotationZ模拟等轴测Y轴旋转,然后使用matrix.CreateScale模拟从Y轴向下的等轴测旋转。游戏对象需要笛卡尔坐标的位置,以及等距坐标的矢量2。通过等轴测变换矩阵传递游戏对象的笛卡尔坐标以获得等轴测坐标,然后绘制到该位置。

能否添加相机声明代码?相机对象不带任何参数。GameLevel包含游戏层和相机。游戏层包含他们绘制的游戏对象。游戏玩家使用GameLevels相机获取每次更新的变换矩阵。我添加了draw代码,希望对您有所帮助。谢谢