Набор спрайтов «Радиус взрыва»

Я пытаюсь создать взрыв, при котором при попадании в определенный объект объекты в ближайшем радиусе также уничтожаются. Например, в игре с разбиванием кирпичей мяч попадает в кирпич, а затем кирпич взрывается, но также взрывает 2 кирпича во всех направлениях. Как это можно сделать? Любая помощь приветствуется.


person user3796045    schedule 25.07.2014    source источник


Ответы (1)


Есть много способов сделать это, но способ spritekit заключается в создании ноды спрайта взрыва. Вы можете анимировать его по мере необходимости с помощью SKAction и использовать ту же логику контакта с физикой SpriteKit, что и с другими спрайтами.

Добавьте битовую маску категории физического контакта для узлов взрыва. Когда происходит событие, которое должно вызвать взрыв, вызовите метод, создающий узел взрыва в точке события. Установите положение узла взрыва в точку. Добавьте любые действия в ноду взрыва. Добавьте к сцене узел взрыва. Его действия будут выполняться. В методе делегата физического контакта didBeginContact: вы проверяете наличие контакта с любыми узлами категорий, которые должны реагировать на контакт с узлом взрыва. Если контакт установлен, основная вещь - сообщить узлу, с которым связались, удалитьFromeParent. Как только у вас это заработает, вы можете проявить фантазию.

Ваш узел взрыва, вероятно, должен получить физическое тело круга на основе CGPath.

Вероятно, вам следует поэкспериментировать с действиями, которые масштабируют его вверх и вниз. Вы можете усложнить процесс, добавив действия, обеспечивающие анимацию, звук и т. д., для уничтожения других узлов перед их удалением. Если они являются пользовательскими подклассами, самое время для протокола, который определяет имя метода, быть взорванным и удаленным. Затем пусть каждый класс реализует это. Звучит как работа, но сохраняет чистоту кода вашей игровой логики.

Этот общий процесс будет обычным, и вы с ним познакомитесь.

person uchuugaka    schedule 25.07.2014
comment
У меня есть концепция того, как это сделать, но у меня все еще есть проблемы с превращением в реальный код. Весь мой проект загружен на https://github.com/HeisenbugXS/Brick-Breaker.git Если бы вы могли взглянуть на это и, возможно, дать мне несколько советов о том, как это сделать с помощью кода, я был бы очень признателен. - person user3796045; 26.07.2014
comment
Я не буду за компьютером до четверга - person uchuugaka; 27.07.2014
comment
Ну, просто о том, как превратить эту концепцию в реальный код. Я все еще новичок в SpriteKit, поэтому у меня с ним небольшие проблемы. Может быть, узел спрайта взрыва будет чем-то прозрачным, например, маской или чем-то еще? Я думал использовать узел SKEmitter для эффекта взрыва. Я проверял Apples Doc для создания CGPath, но это все еще немного сбивает с толку. А затем также проверить контакт между взрывом и кирпичами, так как у меня есть кирпичи, которые идут в 5 рядов с 8 столбцами, но я хочу, чтобы только 2 в каждом направлении взорвались от центра взрыва. - person user3796045; 27.07.2014
comment
Я могу посмотреть код через несколько дней. До тех пор сначала сосредоточьтесь на обнаружении контакта и реагировании на него. Если вы можете достичь этого шага, все остальное — украшение. - person uchuugaka; 27.07.2014