2

我正在尝试在 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 4.0 中的 2D BoundingRectangle 旋转

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

4

2 回答 2

3

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

计算旋转矩形碰撞的一种算法是分离轴定理

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

R(θ) = [cos(θ), -sin(θ);  正弦(θ)、余弦(θ)

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

P' = R(θ) * P

这等于

于 2013-04-27T08:29:35.323 回答
0

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

旋转边界框

希望这会有所帮助!

于 2013-05-10T07:04:41.427 回答