2017-05-05 54 views
0

我试图在Monogame中旋转纹理!它可以围绕另一个对象旋转,比如做一个圆圈(不是对它自己的纹理进行排列),它可以做圆圈旋转。它不能用鼠标旋转,而是在该半径内持续旋转。我在MOnogame中进行了一次新的尝试,最后两天尝试了一切,但都没有成功。有人说我可以对Sin和Cos做一些思考,但我没有得到它!它的一个项目,我很失落!如果有人能帮助我,我会非常非常棒! [所以周围的背景这个标志schould routate] [2]在monogame,c围绕背景wit​​hut鼠标旋转的纹理#

链接到图片https://www.dropbox.com/s/gywi7teun8lqfp1/Unbenannt.png?dl=0

回答

0

这是一个纯粹的数学问题。从我可以理解,你要的是做点周围的纹理轨道,看到这个公式:

newX = centerX + (cosX * (pointX-centerX) + sinX * (pointY -centerY)) 
newY = centerY + (-sinX * (pointX-centerX) + cosX * (pointY -centerY)) 

有了:
centerXcenterY是点左右要轨道
cosXsinX是分别
pointXpointY角度的余弦和角度的窦是你想从(你的情况纹理位置)

注意,应用旋转位置角度应该是弧度,而不是度数。

+0

非常感谢,但我怎么可以将它翻译成代码? –

+0

这会工作,但在monogame中最好使用旋转矩阵,它更多的是api的精神,加上在他们为你做罪和cos的掩护下 –

0

这个问题的答案可以在这里找到:

Have an object circle an object

也有,如果你想用一个矩阵,让API旋转,就如何在MonoGames

使用数学的例子你可以尝试这样的事情

public Vector2 RotateAboutOrigin(Vector2 point, Vector2 origin, float rotation) 
{ 
    return Vector2.Transform(pointorigin,Matrix.CreateRotationZ(rotation))+origin; 
}