我有一个使用笛卡尔坐标系布置的小型游戏关卡。我有一个相机类,我想使用这个矩阵将所有点从笛卡尔空间转换到等距空间:
[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();
}
_transformation 是每次更新从 CameraIso2D 返回的矩阵 _mTransform