Вращаться вокруг точки к мышке - PullRequest
4 голосов
/ 31 января 2011

Я думаю, что это должно быть простой проблемой, но у меня много проблем с реализацией этого, потому что так много вещей вовлечено.

Я пытаюсь повернуть объекты , определяемые их центром , вокруг определенной точки , кроме центра , чтобы повернуть его к расположению мыши

У меня есть определенная точка в мировом пространстве и расположение мыши в мировом пространстве, а также центр каждого элемента.

Пожалуйста, избегайте ответов о том, как вращаться в направлении мыши или как вращаться вокруг точки по отдельности - я пытаюсь сделать и то и другое!

1 Ответ

2 голосов
/ 01 февраля 2011

Если это правильная интерпретация вашего вопроса, поворот от «последнего кадра» к «этому кадру» ,, 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 ()

Ог

...