Обнаружение щелчка / касания на изометрической текстуре
Я с трудом пытаюсь реализовать обработку кликов в простой изометрической игре Sprite Kit.
У меня есть игровая сцена (SKScene) с картой (SKNode), содержащей несколько объектов Tile (SKSpriteNode).
Вот скриншот карты:
Я хочу быть в состоянии обнаружить плитку, на которой щелкнул пользователь, поэтому я реализовал mouseDown для объекта Tile. Вот мой указатель мыши в Tile.m:
-(void)mouseDown:(NSEvent *)theEvent
{
[self setColorBlendFactor:0.5];
}
Код, кажется, работает нормально, но есть сбой: узлы перекрываются, и в прозрачной части узла обнаруживается событие щелчка. Пример (ссылки были добавлены только для иллюстрации проблемы. Они не используются в логике):
Как вы можете видеть, если я нажму на верхний левый угол плитки 7, плитка 8 станет прозрачной.
Я пробовал что-то вроде получения всех узлов в месте щелчка и проверки, если щелчок находится внутри CGPath, но безуспешно (я думаю, что в координатах что-то не так).
Итак, мой вопрос здесь заключается в том, как обнаружить щелчок только по текстуре, а не по прозрачной части? Или, может быть, мой подход к проблеме неверен?
Любой совет будет принят во внимание.
Редактировать : для тех, кто заинтересован в решении, которое я наконец-то использовал, смотритемой ответ здесь