围绕鼠标旋转

时间:2011-01-31 09:44:32

标签: c# xna 2d

我认为这应该是一个简单的问题,但我在实施这个问题时遇到了很多麻烦,因为涉及的内容很多。

我正在尝试围绕已定义的点 围绕中心 旋转由其中心定义的对象,以面向该位置鼠标

我在世界空间中定义了点,鼠标在世界空间中的位置以及每个项目的中心。

请避免给出如何旋转鼠标或如何围绕某个点旋转的答案 - 我正在尝试两者兼顾!

1 个答案:

答案 0 :(得分:2)

如果这是对您的问题的公平解释,请从“最后一帧”旋转到“此帧”, enter image description here

如果你知道想要精灵旋转的点的位置,并且你知道你想要精灵的那个点的距离,试试这个:

float radius = ?.?f; // distance from pivot point to sprite
Vector2 spritePivot = new Vector2(?, ?); //location of pivot point
Vector2 mouseToPoint = spritePivot - new Vector2(mouseState.X, mouseState.Y);
mouseToPoint.Normalize();
float spriteAngle = MathHelper.Atan2(mouseToPoint.Y, mouseToPoint.X);
mouseToPoint *= radius;
Vector2 spriteLocation = spritePivot + mouseToPoint;

稍后,在绘制精灵时,请使用spriteAngle& spriteLocation作为SpriteBatch.Draw()

的正确重载中的参数

的Dra