我有一個船的紋理,正好在船的端口下面是一個導彈的紋理。當我旋轉船舶時,我需要導彈停留在相對於船舶的相同位置(即,在港口翼下)。我讀過一些文章以及與此(抱歉,這是一個有點亂)想出了:圍繞一個點旋轉
private void RotateWeapons()
{
float x, y;
/*
x = leftMissile.X + (radius * (float)Math.Cos(Rotation));
y = leftMissile.Y + (radius * (float)Math.Sin(Rotation));
*/
leftMissile = Vector2.Transform(leftMissile - center, Quaternion.CreateFromAxisAngle(Vector3.Backward, Rotation)) + center;
//leftMissile.X = x;
//leftMissile.Y = y;
}
凡leftMissile
是Vector2
描述導彈的中間,center
是船的中心爲Vector2
。它幾乎可以工作,精靈圍繞中心旋轉。問題是,它並沒有停留在港口翼上的同一點上。
這是正常的:
這是90度,這進一步的斷翼:
並旋轉180度時,它甚至不是在船上了:
我想嘗試從旋轉計算中刪除'center',看看它是如何影響結果的。 – ChrisF 2012-03-04 22:11:29
我試圖從開始和結束時獨立地取消中心。它也做了同樣的事情...... – Jack 2012-03-05 00:08:57
嗯 - 紋理是如何定義的以及每個紋理是(0,0)? – ChrisF 2012-03-05 00:14:00