Как я могу обнаружить, связано ли прикосновение к спрайту или нет в состоянии зума?

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

  •  02-10-2019
  •  | 
  •  

Вопрос

Сначала я масштабировал слой больше, который содержит спрайты. Теперь мне нужно чувствовать прикосновение к спрайту. Я пробовал следующим образом, но не могу добраться до цели-

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: Я использовал Cocos2D Framework

Это было полезно?

Решение 3

Наконец я нашел решение :), вот код

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

CGPoint tapPosition = [self convertToNodeSpace:convertedLocation];

где «я» - это слой держателя спрайта, как я уже указал. Этот слой прослушивает сенсорное событие.

Другие советы

Во-первых, вам нужно убедиться, что вы получите местоположение от UITouch правильно.

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

Во-вторых, вам нужно проверить ваше касание против ограничительной коробки спрайта.

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

Фрэнк Митчелл правильный. Другой подход будет добавить свой прослушивающий код в сам спрайт, чтобы Кокосос выполнил работу для вас. Он будет отправлять только мероприятия CCTouchesbegesbegan Sprite, если оно на самом деле касается.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top