c# – 围绕鼠标旋转

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

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

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

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

最佳答案 如果这是对您的问题的公平解释,从“最后一帧”旋转到“此帧”,

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

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

点赞