Ejecutar el método continuamente mientras se mantiene el dedo en la pantalla

Estoy desarrollando un juego que tiene armas como un revólver, rifle y escopeta. Usted elige un arma y dispara alienígenas que aparecen en la pantalla. Ya casi termino, pero tengo un problema con disparar a los alienígenas con pistolas automáticas, como una ametralladora. Para las armas de un solo disparo, estoy usando esto para detectar cuándo un alienígena está en el punto de mira, y si lo es, ocultándolo:

CGPoint pos1 = enemyufoR.center; if ((pos1.x > 254) && (pos1.x < 344) && (pos1.y > 130) && (pos1.y < 165 && _ammoCount != 0)) { enemyufoR.hidden = YES; [dangerBar setProgress:dangerBar.progress-0.10]; _killCount = _killCount+3; [killCountField setText: [NSString stringWithFormat:@"%d", _killCount]]; timer = [NSTimer scheduledTimerWithTimeInterval: 4.0 target: self selector: @selector(showrUfo) userInfo: nil repeats: NO]; } 

Esto funciona bien para la mayoría de las armas, pero para la ametralladora lo necesito para comprobar continuamente la position de los enemigos mientras la pistola está disparando. ¿Cómo haría esto?

Comtesting el timestam desde un UITouch

Um, cuando tocas el button disparar, obviamente estás llamando algo así:

 // -------------------------------------- // PSEUDO-CODE // -------------------------------------- -(void)shootButtonPressed { [self checkEnemies]; } 

A partir de eso, ¿por qué no declaras una variable BOOL y la usas para comprobar si el dedo todavía se presiona así:

 // -------------------------------------- // PSEUDO-CODE // -------------------------------------- @interface MyGameClass { // defaults to FALSE BOOL isTouching; } -(void)shootButtonPressed { // assumes isTouching is a instance variable declanetworking somewhere isTouching = YES; [self checkEnemies]; } -(void)checkEnemies { // check enemy action // --------------------------------------------- // when finger lifts off the screen, this // isTouching variable will be reset to FALSE // so as long as isTouching is TRUE, we call // this same method checkEnemies again // --------------------------------------------- if(isTouching) { [self checkEnemies]; } } // reset the isTouching variable when user finger is taken off the screen -(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { isTouching = NO; }