我试图在Monogame中旋转纹理!它可以围绕另一个物体旋转,比如做一个圆圈(不是自己编织纹理),它可以做一个圆圈旋转。它不能用鼠标旋转,而是在该半径内连续旋转。我是MOnogame的新手,最后几天尝试了一切,没有任何效果。有人说我可以和Sin和Cos做一些思考,但我没有得到它!它是一个项目,我很丢失!如果有人能帮助我,我会非常非常高兴! [所以这个标志应该在背景中徘徊] [2]
链接到图片https://www.dropbox.com/s/gywi7teun8lqfp1/Unbenannt.png?dl=0
答案 0 :(得分:0)
这是一个纯粹的数学问题。根据我的理解,你想要的是使你的纹理轨道围绕一个点,看到这个公式:
newX = centerX + ( cosX * (pointX-centerX) + sinX * (pointY -centerY))
newY = centerY + ( -sinX * (pointX-centerX) + cosX * (pointY -centerY))
使用:centerX
和centerY
是您想要绕轨道运行的点
cosX
和sinX
分别是角度和角度的正弦的余弦
pointX
和pointY
是您要应用旋转的位置(在您的情况下为纹理位置)
请注意,角度应为弧度,而不是度数。
答案 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;
}