我正在尝试在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游戏。
答案 0 :(得分:3)
Rectangle
结构是轴对齐边界矩形。侧面将始终与X和Y轴平行。如果你想要一个旋转的边界矩形,你必须自己实现它。
计算旋转矩形碰撞的一种算法是Separating Axis Theorem。
如链接答案中所述,矩阵在计算机图形学中是必不可少的。您可以通过使用相同的旋转矩阵旋转每个顶点来旋转形状。这是两个维度的一般rotation matrix:
然后将矩阵“应用”到具有矩阵向量乘法的向量:
等于
答案 1 :(得分:0)