Мне следует предвосхитить это, потому что я не рядом с математиком.Код, который я нашел в другом вопросе, кажется, работает несколько ... за исключением того, что он заставляет объект, который я помещаю, вращаться в большом круге, в основном за пределами экрана.
Вот код:
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 для определения угла.Остальное потом для меня загадка.Я знаю, что я должен узнать, что все делает, и я собираюсь поступить в колледж (только на десять лет позже), начиная с весны.Я пытался читать их, но я потерян.Буду признателен за любую помощь.
Кроме того, если у вас есть хороший сайт для чайников, который вы можете порекомендовать, я был бы рад прочитать его.