2013-03-27 4 views
2

Итак, у меня есть блок, перемещающийся с помощью встроенного акселерометра iPhone, и еще один блок, который случайно появляется на экране. Я пытаюсь использовать оператор if, чтобы определить, удаляет ли движущийся блок или касается неподвижного целевого блока, в котором, если он будет, он будет перемещаться в другую позицию на экране случайным образом. Все работает BESIDES, определяя, равны ли две координаты в любой заданной точке. Вот до сих пор ..Создание моего первого приложения для iPhone. Перемещение блока

редактировать: * поэтому я удалил YY переменные хх & и заменили их self.xVar и self.yVar, которые, казалось, работать немного, но был очень схематичны и остановился

edit2: ** так что удаление xx и yy действительно помогло, но оно работает только на 2-3 крана, а затем останавливается.

Edit3 ** понял, что с тем же х или у переменной не правильный путь идти об этом ..

-(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

Есть в любом случае, чтобы обнаружить, когда два объекта встретятся на экране? Без использования координат, так как это не сработает. Спасибо – Apetro

+0

Хмм ... любые рекомендации? – Apetro

+0

Вам нужно, чтобы передать эту точную координату? Я предполагаю, что попасть в это крошечное пятно довольно сложно. Он также не будет регистрировать «краны» или «подталкивания», так как им нужно будет разделить центральную точку, если, конечно, ваши ящики не имеют размера 1x1. Возможно, использование диапазона действительных координат приведет к большему количеству результатов поиска (т. Е. Ширины ящиков, факторизованных в X и высоту в Y). – Squatch

ответ

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)

+0

пс. Я думаю, вы имеете в виду прямоугольники. Использование слова «блок» заставляет его звучать так, как будто вы пытаетесь сделать что-то с анонимной функцией. – user1790252

Смежные вопросы