2

だから私は、iPhone 内蔵の加速度計の助けを借りて移動するブロックと、画面にランダムに表示される別のブロックを持っています。if ステートメントを使用して、移動するブロックが動かないターゲット ブロックをタップまたはタッチするかどうかを判断しようとしています。任意の点で 2 つの座標が等しいかどうかを判断する以外に、すべてが機能します。ここまでです..

編集: *そこで、xx 変数と yy 変数を削除し、self.xVar と self.yVar に置き換えました。

edit2: **したがって、xx と yy を削除すると役に立ちましたが、2 ~ 3 回のタップでしか機能せず、その後停止します。

edit3 **同じ x OR y 変数を使用するのは正しい方法ではないことに気付きました..

-(void) accelerometer:(UIAccelerometer *)accelerometer didAccelerate:(UIAcceleration *)acceleration
{
...

    //Make the new point
    CGPoint buttonNewCenter = CGPointMake(newX,newY);
    Button.center = buttonNewCenter;


    int xx = self.xVar;
    int yy = self.yVar;

    if (newX == xx || newY == yy) {
        int randX = arc4random() % 320;
        int randY = arc4random() % 548;

        CGPoint randNewPlace = CGPointMake(randX, randY);
        Rand.center = randNewPlace;
    }

}

... ... ...

- (void)viewDidAppear:(BOOL)animated
{
    [self awakeaccelerometer];

    int randX = arc4random() % 320;
    int randY = arc4random() % 548;

    CGPoint randNewPlace = CGPointMake(randX, randY);
    Rand.center = randNewPlace;

    self.xVar = (randX+15);
    self.yVar = (randY+15);


}

そのため、オープニング関数は、ターゲット ブロックが配置されている場所をランダムに決定し、他のブロックは加速度計に基づいて画面上を自由に移動します。if self.xVar || self.yVar == newX || newYいつでも判断できるようにしています。前もって感謝します!

4

1 に答える 1

1

2 つの長方形が交差するかどうかを確認するのではなく、2 つの点が同じ場所にあるかどうかを確認しようとしている理由がわかりません。ポイントは非常に小さいです。ポイントが長方形内にあるかどうかを確認したい場合は、 を使用できますCGRectContainsPoint。(Apple の Web サイトの議論はこちらを参照してください。) 2 つの長方形が交差しているかどうかを確認したい場合 (これがあなたがやろうとしていることだと思います)、 を使用しますCGRectIntersectsRect。(最初に CGRectMake を呼び出す必要がある場合があります。)

本当に計算したい場合は、(self.x+self.width<new.x or new.x+new.width<self.x or self.y+self.height<new.y or new.y+new.height<self.y)

于 2013-03-28T01:48:50.197 に答える