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

何らかの理由で、これはそのメソッドからの私の出力です:

エラーログ

私はこれをあまりにも長い間見てきましたが、何が悪いのかわかりません。何か案は?

4

1 に答える 1

0

条件が正しくないようです。大きさの差をとっていますが、差の大きさが必要です。私はあなたがこれを望んでいると思います:

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

于 2014-03-07T04:12:39.770 に答える