我正在用C#和XNA 4.0制作游戏。在某些关卡中,我需要一个相机矩阵,以使关卡看起来向左/向右滚动。此外,当使用设置更改窗口大小时,我还需要缩放矩阵来缩放图形。我的两个矩阵都是可用的,但是我现在用这样的draw方法调用它们:
if (scrollingLevel)
{
//Use the camera matrix to make the stage scroll
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, null, null, null, null, camera.transform);
}
else
{
//Use the scaling matrix to scale the graphics
spriteBatch.Begin(SpriteSortMode.Deferred, null, null, null, null, null, transform);
}
我想要的是如果它是滚动级别同时应用两个矩阵(根据窗口大小缩放图形,然后使用相机矩阵进行级别滚动)。但是,简单地添加和乘以矩阵不会产生准确的结果(添加会阻止图形缩放到它们应该的精确量,并且相乘会使相机滚动不准确)。如何同时应用这两个矩阵?
答案 0 :(得分:1)
在传递给spriteBatch.Begin
之前简单地乘以矩阵。
Matrix multiplication允许两个矩阵的效果附加到单个矩阵中。请注意,此操作不是可交换的,这意味着A * B != B * A
。
在您的情况下,您应该将缩放矩阵与相机矩阵相乘。