所以我在iPhones内置加速度计的帮助下移动了一个块,并且随机出现在屏幕上的另一个块。我正在尝试使用if语句来确定移动块是否点击或触摸不动的目标块,如果它这样做,它将随机地重新定位到屏幕上的另一个位置。一切都工作BESIDES确定两个坐标在任何给定点是否相等。到目前为止......
编辑 * 所以我删除了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
。提前谢谢!
答案 0 :(得分:1)
我不确定你为什么要看两个点是否在同一个地方,而不是看两个矩形是否相交。积分非常小。如果您要做的是查看某个点是否在矩形内,您可以使用CGRectContainsPoint
。 (请参阅Apple网站here上的讨论。)如果您想查看两个矩形是否相交(我认为您正在尝试这样做),请使用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)