2017-06-02 24 views
1

我需要在兩個SpriteKit節點之間移動,長度爲例如100(紅色箭頭)的CGVector限制CGVector的長度,同時保持其方向

但我想限制矢量的長度爲70,如果它超過70(綠色箭頭)。所以,我需要「削減」紅色矢量的長度,但要保持它的方向。

Drawing of a vector showing actual length and limited length

我怎麼能這樣做?

回答

3

假設您有一個變量v,其類型爲CGVector。首先,計算它的長度:

double len = hypot(v.dx, v.dy); 

然後,如果它是大於70,您可以通過len分兩種組分和70相乘,使向量的長度等於70:

if (len > 70.0) 
{ 
    v.dx *= 70.0/len; 
    v.dy *= 70.0/len; 
}