如何在XNA中旋转边界框?

时间:2013-04-27 02:37:11

标签: 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);

如何用播放器旋转它?我试图解决这个问题并偶然发现:

2D BoundingRectangle rotation in XNA 4.0

但是我不太确定如何实现他正在谈论的矩阵,而且我正在制作一个2D游戏,而不是3D游戏。

2 个答案:

答案 0 :(得分:3)

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

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

如链接答案中所述,矩阵在计算机图形学中是必不可少的。您可以通过使用相同的旋转矩阵旋转每个顶点来旋转形状。这是两个维度的一般rotation matrix

R(theta) = [cos(theta), -sin(theta); sin(theta), cos(theta)

然后将矩阵“应用”到具有矩阵向量乘法的向量:

P' = R(theta) * P

等于

答案 1 :(得分:0)

在找到解决方案之前,我在这个问题上挣扎了两天

Rotating bounding box

希望这会有所帮助!