2

所以我有一个在 iPhone 内置加速度计的帮助下移动的块,另一个随机出现在屏幕上的块。我正在尝试使用 if 语句来确定移动块是否轻敲或触摸不动的目标块,如果这样做,它将随机重新定位到屏幕上的另一个位置。除了确定两个坐标在任何给定点是否相等之外,一切正常。到此为止。。

编辑: *所以我删除了 xx & yy 变量并用 self.xVar 和 self.yVar 替换它们,这似乎有点工作,但非常粗略并停止了

编辑2: **所以删除 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

我不确定您为什么要尝试查看两个点是否在同一个位置,而不是查看两个矩形是否相交。点非常小。如果您要做的是查看一个点是否在矩形内,您可以使用CGRectContainsPoint. (请参阅此处苹果网站上的讨论。)如果您想查看两个矩形是否相交(我认为这是您想要做的),请使用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 回答