Допустим там есть сцена следующего вида: Есть сцена размером с кадр устройства. В сцене есть красный шар, который может перемещаться по «миру». Этот мир определяется черными и белыми областями, где мяч может двигаться ТОЛЬКО в белой области. Вот картинка, которая поможет объяснить:
Части черной области можно стереть, как если бы пользователь рисовал белым цветом поверх сцены. Это означало бы, что область, в которой мяч может перемещаться, постоянно меняется. Теперь, как можно реализовать physicsBody для границы между белой и черной областями?
Я пробовал переопределять physicsBody каждый раз, когда он менялся, но как только форма становится достаточно сложной, это вообще не является жизнеспособным решением. Я попытался создать двумерный массив невидимых «коробок» и указать, является ли большая часть области внутри каждой коробки белой или черной, и если мяч коснется черной коробки, он будет отброшен назад. Однако это требовало интенсивного рендеринга и слишком большого количества итераций по массиву. Поскольку мой исходный массив содержал блоки размером чуть больше пикселя, я попытался увеличить эти блоки, чтобы немного сгладить движение, но в конечном итоге это привело к тому, что часть мяча остановилась белыми областями и оказалась внутри черной области. Это было нежелательно, так как пользователь мог чувствовать невидимые преграды, в которые он, казалось, врезался.
Я попытался найти другие методы для реализации этой сцены типа «разрушаемой местности», но решения, которые я нашел и попробовал, использовали другие игровые движки. Чтобы уточнить, я использую Objective-C и платформу Apple SpriteKit; и я не ищу подробный класс, полный кода, а скорее некоторый псевдокод или идеи реализации, которые привели бы меня к решению.
Спасибо.