我應該在這裏說明這一點,我不在數學人員附近。我在另一個問題中發現的代碼似乎有點工作...除了它導致我放置的對象大部分在屏幕外旋轉。圍繞中心vector2點的物體的旋轉
下面的代碼:
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;
}
位置由圍繞中心載體的任意位置點擊鼠標設置。
中心是我點擊時放置的對象的中心(你猜對了)。這是通過簡單地劃分紋理的高度和寬度來確定的。
原產地是vector2我試圖旋轉。它靜態設置爲384,384。
盡我所知,它得到兩個向量之間的距離,然後使用atan2來確定角度。其餘的事對我來說是個謎。我知道我應該知道一切都做了什麼,而且我準備在春季開始上大學時(僅延遲十年)。我試着讀過它們,但我迷路了。任何幫助,將不勝感激。另外,如果你有一個很好的傻瓜網站,你可以推薦,我很樂意通讀它。
http://stackoverflow.com/questions/7846775/how-to-gradually-rotate-an-object-to-face-another-turning-the-shortest-distance – Olle89