2013-11-04 36 views
0

我試過Math.Atan2(futurePos.Y - pos.Y, futurePos.X - pos.X)作爲旋轉,但它似乎只能在X軸上工作。
而如果我這樣做Math.Atan2(mouse.Y - pos.Y, mouse.X - pos.X)它工作得很好(雖然我必須管理,如果速度是負值,即使這不適用於兩個方向)。速度方向點矩形(XNA)

(futurePos = position + velocity) 

我期望這裏的結果是汲取其長度相對於粒子的速度和其角度朝向其中顆粒是要點的粒子的位置的矩形。

回答

0

僅供參考一切,我結束了繪製從對象到未來位置(如我的問題所預期的那樣)。

下面是Draw方法中的代碼;

Vector2 nextPos = position + velocity * 7; 

drawLine(spriteBatch, Game1.pixelTexture, position, nextPos, Color.FromNonPremultiplied(255, 0, 0, 100)); 

這是畫線代碼;

void drawLine(SpriteBatch spa, Texture2D tex, Vector2 src, Vector2 dst, Color col) 
{ 
    Vector2 direction = dst - src; 
    var angle = (float)Math.Atan2(direction.Y, direction.X); 
    float distance; 
    Vector2.Distance(ref src, ref dst, out distance); 

    spa.Draw(tex, src, new Rectangle((int)src.X, (int)src.Y, (int)distance, 2), col, angle, Vector2.Zero, 1.0f, SpriteEffects.None, 0f); 
} 
1

記住,如果你的參照系是「經典」之一,在XNA Y軸是相反的,所以你要否定你把作爲第一個參數中Math.Atan2