SpriteKit: определить порядок рисования для проверки удара

Я использую Spritekit и хочу пройти тест на удар, который работает интуитивно. Другими словами: я получил позицию x,y и хочу выяснить, какой самый верхний узел был поражен. (И под "самым верхним" я подразумеваю тот, который пользователь на самом деле считает самым верхним.)

Я не нашел какой-либо предопределенной функциональности SpriteKit, которая дает мне эту функциональность. На самом деле я обнаружил, что сам SpriteKit использует некое интуитивно понятное тестирование попаданий, см. Здесь.

Моя идея реализовать это самостоятельно - рассчитать некоторый глобальный z порядок, как описано в ответе здесь, Доброчудни Тапиром.

Я думаю, что это может сработать, меня смущает утверждение в документации:

Важный: классы узла SKCropNode и SKEffectNode изменяют поведение рендеринга сцены. Дочерние элементы этих узлов отображаются независимо как отдельное дерево узлов, а результаты отображаются в дереве, которое содержит узел кадрирования или эффекта. Для получения дополнительной информации см. Работа с другими типами узлов.

Чтобы найти здесь, под "Понимание порядка рисования для дерева узлов".

Я не нашел упомянутую точку "Работа с другими типами узлов", поэтому я понятия не имею, как и почему SKCropNodes или SKEffectNodes должны изменять порядок рисования...

Так что ответы на следующие вопросы могут помочь мне:

  • Предлагает ли SpriteKit некоторую функциональность для извлечения чертежа?
  • Если нет, вы думаете, что моя пользовательская реализация работает? (Как узлы Crop или Effect могут его уничтожить?)
  • Не могли бы вы указать мне информацию по этому вопросу? Как пропавшая статья "Работа с другими узлами"?

Обновить:

Я только что узнал, что описанное здесь поведение не является правильным.

Как уже упоминалось в комментариях, я указывал на nodeAtPosition или nodeAtPosition. Я использовал здесь код и проверил его.

Результат не удовлетворяет. Две проблемы:

  1. Заданное zPosition игнорируется в nodeAtPosition. Независимо от того, находится ли синий или красный квадрат впереди, я получаю тот же порядок в массиве, возвращаемом в nodeAtPosition.
  2. Эти функции используют накопленный кадр. Но в префекте я хотел бы использовать точный размер каждого узла, а не накопленный кадр.

Несколько картинок до 1.: введите описание изображения здесь

введите описание изображения здесь

0 ответов

Другие вопросы по тегам