Wie kann ich erkennen, ob eine Aktion Berührung auf einem Sprite berührt oder überhaupt nicht Zoom Zustand?

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

  •  02-10-2019
  •  | 
  •  

Frage

Zuerst habe ich die Schicht größer skaliert, welche die Sprites enthält. Jetzt brauche ich Berührung auf einem Sprite zu erfassen. Ich habe versucht, wie folgt, aber kippe Reichweite Ziel -

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);
}

Zur Info: Ich habe verwendet cocos2d Rahmen

War es hilfreich?

Lösung 3

Endlich ich die Lösung gefunden zu haben :), hier ist der Code

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

CGPoint tapPosition = [self convertToNodeSpace:convertedLocation];

Dabei steht ‚Selbst‘ ist die Sprite-Halteschicht, wie ich vorher angegeben haben. Diese Schicht wird das Berührungsereignis zu hören.

Andere Tipps

Zunächst müssen Sie sicherstellen, dass Sie den Speicherort aus dem UITouch korrekt erhalten.

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

Zweitens müssen Sie Ihre Berührung gegen die Sprite-Begrenzungsrahmen testen.

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

Frank Mitchell ist richtig. Ein anderer Ansatz wäre Hörposition Code an das Sprite hinzuzufügen selbst, so dass Cocos wird die Arbeit für Sie tun. Es wird nur die Sprite ccTouchesBegan Ereignisse senden, wenn es tatsächlich berührt wird.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top