1
-(CGPoint)Rule2:(Boid*)b
{
CGPoint v = CGPointMake(0, 0);
for (Boid *boid in ActiveBoids)
{
if (boid != b)
{
NSLog(@"%f", [Utilities Magnitude:boid.position] - [Utilities Magnitude:b.position]);
if(([Utilities Magnitude:boid.position] - [Utilities Magnitude:b.position]) < 150)
{
v = [Utilities MinusVector:v Vector2:CGPointMake(boid.position.x - b.position.x, boid.position.y - b.position.y)];
NSLog(@"%f", v.x);
NSLog(@"%f", v.y);
}
}
}
return v;
}
我的幅值和相減的方法都很好地工作:植絨分離規則
+ (CGPoint)MinusVector:(CGPoint)v1 Vector2:(CGPoint)v2
{
return CGPointMake(v1.x - v2.x, v1.y - v2.y);
}
+ (float)Magnitude:(CGPoint)p1
{
return hypot(p1.x, p1.y);
}
出於某種原因,這是從我的方法輸出:
我一直在找在這個時間太長,看看有什麼不對。有任何想法嗎?
你可以看看蘋果的類鳥羣從2014年WWDC這裏羣聚行爲的一些細節的SpriteKit實現:https://stackoverflow.com/q/44235801/4376309 – peacetype