使用具有不同旋转原点的Spritebatch

时间:2011-04-15 09:47:39

标签: c# xna xna-4.0

我正在绘制一个基于平铺的游戏。一些瓷砖可以绕其中心旋转。看来,为一个SpriteBatch.Draw调用设置旋转原点会影响所有其他没有指定原点的Draw调用。

有没有办法避免为非旋转瓷砖的每个其他绘图调用设置原点?

理想情况下,我不想将我的非旋转瓷砖一起批量绘制,然后单独绘制到我的旋转瓷砖上。

1 个答案:

答案 0 :(得分:2)

  

看来,为一个SpriteBatch.Draw调用设置旋转原点会影响所有其他没有指定原点的Draw调用。

事实并非如此。 origin的{​​{1}}仅适用于特定的Draw

如果您使用的Draw重载未指定原点,则隐式使用Draw的原点。

现在,如果您实际上将矩阵传递给Vector2.Zero,那么该矩阵将应用于所有 Begin次调用(包括您设置原点的矩阵)特殊的sprite批处理,直到调用Draw方法。

您应该使用End的旋转参数来旋转您世界中的各个精灵。您应该使用Draw上的矩阵参数来移动所有精灵的视图(如相机)。