Я должен предварять это тем, что я далеко не математик. Код, который я нашел в другом вопросе, похоже, несколько работает ... за исключением того, что он заставляет объект, который я помещаю, вращаться по большому кругу, в основном за пределами экрана.
Вот код:
public void Update(GameTime gameTime)
{
Location = RotateAboutOrigin(Center, Origin, 0.01f);
}
public Vector2 RotateAboutOrigin(Vector2 point, Vector2 origin, float rotation)
{
var u = point - origin; //point relative to origin
if (u == Vector2.Zero)
return point;
var a = (float)Math.Atan2(u.Y, u.X); //angle relative to origin
a += rotation; //rotate
//u is now the new point relative to origin
u = u.Length() * new Vector2((float)Math.Cos(a), (float)Math.Sin(a));
return u + origin;
}
Местоположение устанавливается щелчком мыши в произвольной позиции вокруг центрального вектора.
Центр - это (как вы уже догадались) центр объекта, который я «помещаю», когда щелкаю. Он определяется простым разделением высоты и ширины текстуры.
Начало координат - это вектор2, вокруг которого я пытаюсь повернуться. Статически он установлен на уровне 384 384.
Насколько я могу судить, это получение расстояния между двумя векторами, а затем использование atan2 для определения угла. Остальное потом для меня загадка. Я знаю, что должен научиться тому, что делает все, и собираюсь это сделать, когда пойду в колледж (всего на десять лет позже), начиная с весны. Я пытался их прочитать, но я потерялся. Любая помощь будет оценена по достоинству.
Кроме того, если у вас есть хороший сайт для чайников, который вы можете порекомендовать, я буду рад его прочитать.