2014-03-07 2 views
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; 
    } 

내 크기를 풀어 및 빼기 방법은 모두 잘 작동 : 내가 찾아 봤는데분리 규칙을

Error Log

: 어떤 이유

+ (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); 
} 

이 그 방법에서 내 출력 너무 오랫동안 무엇이 잘못되었는지를 알기 위해 이것으로. 어떤 아이디어?

+0

: https://stackoverflow.com/q/44235801/4376309 – peacetype

답변

1

귀하의 상태가 잘못되었습니다. 당신은 규모의 차이를 가져 가고 있지만 차이의 크기를 원합니다. 난 당신이 원하는 생각 :

if ([Utilities Magnitude:CGPointMake (boid.position - b.position)] < 150) 

현재 WWDC 2014에서 일부 세부 사항을 행동을 풀어 boids 애플의 SpriteKit 구현을 체크 아웃 할 수