在Monogame中旋转背景wit​​hut鼠标的纹理,c#

时间:2017-05-05 12:46:15

标签: c# monogame

我试图在Monogame中旋转纹理!它可以围绕另一个物体旋转,比如做一个圆圈(不是自己编织纹理),它可以做一个圆圈旋转。它不能用鼠标旋转,而是在该半径内连续旋转。我是MOnogame的新手,最后几天尝试了一切,没有任何效果。有人说我可以和Sin和Cos做一些思考,但我没有得到它!它是一个项目,我很丢失!如果有人能帮助我,我会非常非常高兴! [所以这个标志应该在背景中徘徊] [2]

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

2 个答案:

答案 0 :(得分:0)

这是一个纯粹的数学问题。根据我的理解,你想要的是使你的纹理轨道围绕一个点,看到这个公式:

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

使用:centerXcenterY是您想要绕轨道运行的点 cosXsinX分别是角度和角度的正弦的余弦 pointXpointY是您要应用旋转的位置(在您的情况下为纹理位置)

请注意,角度应为弧度,而不是度数。

答案 1 :(得分:0)

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

Have an object circle an object

还有一些如何在MonoGames中使用Math的例子

如果您想使用矩阵并让api为您旋转,您可以尝试这样的

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