¿Cómo puedo detectar si una acción táctil toca un sprite o no en el estado de zoom?

StackOverflow https://stackoverflow.com/questions/3174123

  •  02-10-2019
  •  | 
  •  

Pregunta

Primera i han reducido la capa más grande que contiene los sprites. Ahora necesito sentir el tacto de un sprite. He tratado de la siguiente manera, pero no puede alcance de la meta -

CGRect tRect= [[aSprite displayedFrame] rect];
    if(CGRectContainsPoint(tRect, touchedPosition))
{
    NSLog(@"touched:>> touch at (%f,%f)",touchedPosition.x,touchedPosition.y);
    // Do something, maybe return kEventHandled;
}
else{
    NSLog(@"NOT touched: touch at (%f,%f)",touchedPosition.x,touchedPosition.y);
}

FYI: He utilizado marco cocos2d

¿Fue útil?

Solución 3

Por fin he encontrado la solución :), aquí está el código

CGPoint location = [touch locationInView: [touch view]];
CGPoint convertedLocation = [[CCDirector sharedDirector] convertToGL:location];

CGPoint tapPosition = [self convertToNodeSpace:convertedLocation];

donde 'yo' es la capa de soporte de sprites como he especificado antes. Esta capa está escuchando el evento táctil.

Otros consejos

En primer lugar, es necesario asegurarse de obtener la ubicación de la UITouch correctamente.

CGPoint location = [touch locationInView:[touch view]];
location = [[CCDirector sharedDirector] convertToGL:location];

En segundo lugar, es necesario poner a prueba su toque contra el cuadro delimitador del sprite.

if (CGRectContainsPoint([sprite boundingBox], location)) {
    // The sprite is being touched.
}

Frank Mitchell es correcta. Otro enfoque sería añadir el código de escucha de la misma manera que el sprite Cocos va a hacer el trabajo por usted. Es sólo enviará los eventos de sprites ccTouchesBegan si está realmente tocado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top