C# 如何在XNA中旋转边界框?

C# 如何在XNA中旋转边界框?,c#,xna-4.0,C#,Xna 4.0,我尝试在xna中旋转边界框,这是我通常的做法: new Rectangle((int)position.X, (int)position.Y, (int)texture.Width, (int)texture.Height); 但它当前不返回绘图代码中的旋转: spriteBatch.Draw(texture, position, null, Color.White, rotation, origin, scale, SpriteEffects.None, 1f); 我如何用

我尝试在xna中旋转边界框,这是我通常的做法:

    new Rectangle((int)position.X, (int)position.Y, (int)texture.Width, (int)texture.Height);
但它当前不返回绘图代码中的旋转:

    spriteBatch.Draw(texture, position, null, Color.White, rotation, origin, scale, SpriteEffects.None, 1f);
我如何用播放器旋转它?我试图弄明白这一点,却意外发现:


但我不太确定如何实现他所说的矩阵,我正在做一个2d游戏,而不是3d游戏。

矩形结构是一个轴对齐的边界矩形。侧面将始终与X轴和Y轴平行。如果你想要一个旋转的边界矩形,你必须自己实现它

计算旋转矩形碰撞的一种算法是

如链接答案中所述,矩阵在计算机图形学中至关重要。可以通过使用相同的旋转矩阵旋转形状的每个顶点来旋转形状。这是两个维度的一般情况:

然后通过矩阵向量乘法将矩阵“应用”到向量:

等于


在找到解决方案之前,我与这个问题斗争了两天

希望这会有帮助