1
我需要在两个SpriteKit节点之间移动,长度为例如100(红色箭头)的CGVector
。限制CGVector的长度,同时保持其方向
但我想限制矢量的长度为70,如果它超过70(绿色箭头)。所以,我需要“削减”红色矢量的长度,但要保持它的方向。
我怎么能这样做?
我需要在两个SpriteKit节点之间移动,长度为例如100(红色箭头)的CGVector
。限制CGVector的长度,同时保持其方向
但我想限制矢量的长度为70,如果它超过70(绿色箭头)。所以,我需要“削减”红色矢量的长度,但要保持它的方向。
我怎么能这样做?
假设您有一个变量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;
}