C# 二维等轴测相机矩阵
我用笛卡尔坐标系设计了一个小游戏关卡。我有一个camera类,我想使用此矩阵将所有点从笛卡尔空间转换为等轴测空间: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)
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代码,希望对您有所帮助。谢谢