我正在尝试使用 spritebatch 执行一些矩阵转换,但我不明白比例矩阵发生了什么。
rotM = Matrix.CreateTranslation(0, 0, 0)
* Matrix.CreateFromYawPitchRoll(MathHelper.ToRadians(startRotations.Y)
, MathHelper.ToRadians(startRotations.X)
, MathHelper.ToRadians(startRotations.Z))
* Matrix.CreateScale(endScale.X, endScale.Y, 0)
* Matrix.CreateTranslation((Origin.X + PositionRec.X + Offset.X) * endScale.X
, (Origin.Y + PositionRec.Y + Offset.Y) * endScale.Y, 0);
sp.Begin(SpriteSortMode.Deferred, null, null, null, null, null, rotM);
sp.Draw(BackgroundTexture, Vector2.Zero, PositionRec, BackgroundColor * alpha);
sp.End();
通常我使用这个顺序得到最好看的结果,但是如果我将比例更改为在旋转之前一切都会变得很奇怪,即使使用 (1.1.0) 比例,所以我只是得到原始大小。
让我们将比例固定为 1(不包括 Z),如果我将顶点与比例保持不变(我认为),它为什么/如何影响旋转?
例子:
平移->旋转->缩放->平移
平移->缩放->旋转->平移
提前致谢, 罗杰