【发布时间】:2011-04-15 21:51:16
【问题描述】:
我正在绘制一个基于图块的游戏。一些瓷砖可以围绕它们的中心旋转。似乎为一个 SpriteBatch.Draw 调用设置旋转原点会影响所有其他未指定原点的 Draw 调用。
有没有办法避免为非旋转图块的每个其他绘制调用指定原点?
理想情况下,我不想将我的非旋转图块批量绘制在一起,然后在我的旋转图块之前/单独绘制。
【问题讨论】:
我正在绘制一个基于图块的游戏。一些瓷砖可以围绕它们的中心旋转。似乎为一个 SpriteBatch.Draw 调用设置旋转原点会影响所有其他未指定原点的 Draw 调用。
有没有办法避免为非旋转图块的每个其他绘制调用指定原点?
理想情况下,我不想将我的非旋转图块批量绘制在一起,然后在我的旋转图块之前/单独绘制。
【问题讨论】:
似乎为一个 SpriteBatch.Draw 调用设置旋转原点会影响所有其他未指定原点的 Draw 调用。
事实并非如此。 Draw 的 origin 仅适用于特定的 Draw。
如果您使用未指定原点的 Draw 重载,则会隐式使用 Vector2.Zero 原点。
现在,如果您实际上将矩阵传递给Begin,则该矩阵将应用于该特定精灵批次上的所有 Draw 调用(包括您设置原点的调用),直到它的End 方法被调用。
您应该使用Draw 的旋转参数来旋转您世界中的各个精灵。您应该使用Begin 上的矩阵参数来移动所有精灵的视图(如相机)。
【讨论】: