【问题标题】:How to rotate a bounding box in XNA?如何在 XNA 中旋转边界框?
【发布时间】:2013-05-10 15:04:41
【问题描述】:

我正在尝试在 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 游戏。

【问题讨论】:

    标签: c# xna-4.0


    【解决方案1】:

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

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

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

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

    等于

    【讨论】:

      【解决方案2】:

      我为这个问题苦苦挣扎了两天,才找到解决办法

      Rotating bounding box

      希望这会有所帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-12-27
        • 1970-01-01
        • 2012-03-23
        • 1970-01-01
        • 2021-08-25
        • 1970-01-01
        • 2012-06-18
        • 2014-01-24
        相关资源
        最近更新 更多