我有250px宽度和2000px高度的纹理。根据各种条件(某种精灵表,是的)在屏幕上绘制250x250的部分。我想要的是在一个固定的目标矩形内绘制它并进行一些旋转。有可能吗?
答案 0 :(得分:3)
是。以下是有效旋转目标矩形的方法:
查看overloads for SpriteBatch.Draw
。
请注意,将Rectangle
作为目标的任何重载都不会采用旋转参数。这是因为这样的事情没有多大意义。关于如何旋转目的地,这一点很模糊。
但是,您可以通过谨慎使用position
和scale
参数来达到与设置目标矩形相同的效果。将这些与origin
(缩放和旋转的质心,以像素相对于sourceRectangle
指定)和rotation
参数相结合,以达到您想要的效果。
(另一方面,如果你想“适应”一个矩形 - 在旋转后有效地缩放 - 你还必须使用transformMatrix
参数来{{3 }}。)
现在 - 你的问题在这一点上并不十分清楚:但如果你所使用的效果更像是旋转你的源矩形,那么你不能用普通的'SpriteBatch来实现
实现此目的的快捷方法是设置充当目标矩形的视口。然后在其中绘制旋转的精灵。请注意,SpriteBatch的坐标系基于视口,而不是屏幕。
“更好”(但实现起来要难得多)的方法是根本不使用SpriteBatch,而是实现自己的精灵绘图,以便旋转纹理坐标。