【发布时间】:2013-10-10 15:01:04
【问题描述】:
我有一个使用笛卡尔坐标系布置的小型游戏关卡。我有一个相机类,我想使用这个矩阵将所有点从笛卡尔空间转换到等距空间:
[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
【问题讨论】:
-
您可以添加您的相机声明代码吗?
-
相机对象不带任何参数。 GameLevel 包含 GameLayers 和一个相机。 GameLayers 包含他们绘制的游戏对象。 GameLayers 使用 GameLevels 相机在每次更新时获取变换矩阵。我添加了绘制代码,希望对您有所帮助。谢谢
标签: c# matrix xna transformation isometric