2010-05-22 15 views
1

J'essaie de créer un jeu très simple où vous pouvez faire glisser un simple imageView. La chose est qu'il y a un mur dans le cadre (juste un rectangle) sur lequel l'image ne devrait pas aller. donc je l'ai fait quelque chose comme ceci:Contraindre un objet touché à entrer en collision avec des murs?

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
UITouch *touch = [[event allTouches] anyObject]; 
if ([touch view] == myImage) { 
    if (CGRectContainsRect (CGRectMake(0, 0, 800, 768), [myImage frame])) 
    { 
    myImage.center = [touch locationInView:self.view]; 
    } 
} 
} 

Mais le problème est que l'image ne sortit de lui est des bornes, puis est arrivé là bloqué et le touchesMoved a pris fin.

donc j'ai ajouté ceci:

else if (CGRectIntersectsRect (CGRectMake(801, 0, 223, 768), [myImage frame])) { 
    CGPoint touchedPoint = [touch locationInView:self.view]; 
    myImage.center = CGPointMake(730, touchedPoint.y); 

    } 

Mais cela fait l'image pour lancer vacillante lorsque l'intersection avec le « mur » et, finalement, est resté coincé là non plus. Je pense qu'il doit y avoir un moyen simple de le faire. quelqu'un pourrait m'éclairer s'il vous plaît?

Répondre

0

ok trouvé mon erreur ..

je devais faire ceci:

if (CGRectContainsPoint (CGRectMake(0, 0, 800, 768), [touch locationInView:self.view])) 

au lieu de ceci:

if (CGRectContainsRect (CGRectMake(0, 0, 800, 768), [myImage frame])) 

vous, tout à fait stupide ..