Проблема обнаружения прямоугольных столкновений (iPhone) - PullRequest
1 голос
/ 22 мая 2010

Я знаю, что, вероятно, опубликовал три вопроса, связанных с этим, затем удалил их, но это только потому, что я решил их до того, как получил ответ. Но этот я не могу решить, и я не верю, что это так сложно по сравнению с другими. Итак, без дальнейших церемоний, вот моя проблема:

Итак, я использую Cocos2d, и одна из главных проблем - у них нет кнопок. Чтобы компенсировать недостаток кнопок, я пытаюсь определить, сталкивался ли он с квадратом (кнопка) после завершения касания. Вот мой код:

- (void)ccTouchesEnded:(NSSet*)touches withEvent:(UIEvent*)event
{
    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInView:touch.view];
    NSLog(@"%f", 240-location.y);
    if (isReady == YES)
    {
        if (((240-location.y) <= (240-StartButton.position.x - 100) || -(240-location.y) >= (240-StartButton.position.x) + 100) && ((160-location.x) <= (160-StartButton.position.y) - 25 || (160-location.x) >= (160-StartButton.position.y) + 25))
        {
            NSLog(@"Coll:%f", 240-StartButton.position.x);
            CCScene *scene = [PlayScene node];
            [[CCDirector sharedDirector] replaceScene:[CCZoomFlipAngularTransition transitionWithDuration:2.0f scene:scene orientation:kOrientationRightOver]];
        }
    }
}

Вы знаете, что я делаю не так?

1 Ответ

0 голосов
/ 23 мая 2010

Почему вы просто не делаете

 if (isReady == YES)
{
    if (CGRectContainsPoint([StartButton boundingBox],location))
    {

        CCScene *scene = [PlayScene node];
        [[CCDirector sharedDirector] replaceScene:[CCZoomFlipAngularTransition transitionWithDuration:2.0f scene:scene orientation:kOrientationRightOver]];
    }
}

[StartButton boundingBox] возвращает CGRect узла, а CGRectContainsPoint проверяет, находится ли расположение CGPoint внутри кнопки.

...