XNA中部分精灵的旋转

XNA中部分精灵的旋转,xna,rotation,Xna,Rotation,我有一个250像素宽,2000像素高的纹理。250x250根据各种条件在屏幕上绘制的部分(某种雪碧片,是的)。我所要做的就是在一个固定的目标矩形内进行旋转。可能吗?是。以下是如何有效旋转目标矩形: 请看下面的图片 请注意,将矩形作为目标的重载都不使用旋转参数。因为这样的事情没有多大意义。你希望目的地如何旋转是不明确的 但是,通过仔细使用位置和比例参数,可以实现与设置目标矩形相同的效果。将这些参数与原点(缩放和旋转的质心,相对于源矩形以像素为单位指定)和旋转参数相结合,以实现所需的效果 (另一方面

我有一个250像素宽,2000像素高的纹理。250x250根据各种条件在屏幕上绘制的部分(某种雪碧片,是的)。我所要做的就是在一个固定的目标矩形内进行旋转。可能吗?

是。以下是如何有效旋转目标矩形:

请看下面的图片

请注意,将
矩形
作为目标的重载都不使用旋转参数。因为这样的事情没有多大意义。你希望目的地如何旋转是不明确的

但是,通过仔细使用
位置
比例
参数,可以实现与设置目标矩形相同的效果。将这些参数与
原点
(缩放和旋转的质心,相对于
源矩形
以像素为单位指定)和
旋转
参数相结合,以实现所需的效果

(另一方面,如果您希望“适合”一个矩形-在旋转后有效地缩放-您还必须使用
transformMatrix
参数来调整。)


现在-你的问题在这一点上还不太清楚:但是如果你想要的效果更像是旋转你的源矩形,那么这不是你用普通的ol'SpriteBatch可以实现的

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

“更好”(但更难实现)的方法是根本不使用SpriteBatch,而是实现您自己的sprite绘图,这将允许您旋转纹理坐标