旋转XNA中的一部分精灵

时间:2011-03-04 00:35:18

标签: xna rotation

我有250px宽度和2000px高度的纹理。根据各种条件(某种精灵表,是的)在屏幕上绘制250x250的部分。我想要的是在一个固定的目标矩形内绘制它并进行一些旋转。有可能吗?

1 个答案:

答案 0 :(得分:3)

是。以下是有效旋转目标矩形的方法:

查看overloads for SpriteBatch.Draw

请注意,将Rectangle作为目标的任何重载都不会采用旋转参数。这是因为这样的事情没有多大意义。关于如何旋转目的地,这一点很模糊。

但是,您可以通过谨慎使用positionscale参数来达到与设置目标矩形相同的效果。将这些与origin(缩放和旋转的质心,以像素相对于sourceRectangle指定)和rotation参数相结合,以达到您想要的效果。

(另一方面,如果你想“适应”一个矩形 - 在旋转后有效地缩放 - 你还必须使用transformMatrix参数来{{3 }}。)


现在 - 你的问题在这一点上并不十分清楚:但如果你所使用的效果更像是旋转你的矩形,那么你不能用普通的'SpriteBatch来实现

实现此目的的快捷方法是设置充当目标矩形的视口。然后在其中绘制旋转的精灵。请注意,SpriteBatch的坐标系基于视口,而不是屏幕。

“更好”(但实现起来要难得多)的方法是根本不使用SpriteBatch,而是实现自己的精灵绘图,以便旋转纹理坐标。