Генерация случайной местности в SpriteKit

Прежде всего, я хочу отметить, что у меня нет глубоких знаний об играх или средах SpriteKit (однако, у меня есть хорошие навыки программирования).

Я хочу создать 2D-игру для iPhone и iPad. Пока я знаю, что должен использовать SpriteKit. Тем не менее, наиболее важным в этой игре является местность. Я должен быть в состоянии генерировать его динамически, так что он будет иметь кривые (но не шипы), как черная линия от прикрепленного изображения. Кроме того, я хотел бы иметь нижнюю часть земли в двух отдельных слоях (один тонкий слой зеленого цвета, чтобы имитировать траву, а остальные - коричневатый цвет, чтобы имитировать грязь), но это что-то хорошее.

Также я хотел бы знать, как я могу "взорвать" небольшую часть земли, когда что-то (например, пушечное ядро) касается этого.

Может ли кто-нибудь объяснить мне или объяснить, как мне этого добиться?

пример случайного сгенерированного грунта

Спасибо!

1 ответ

Решение

Генерация карт

Здесь вы можете попробовать два подхода:

  1. SKTileMapNode класс в SpriteKit
  2. CGPath класс (ы) в CoreGraphics.

Подход SpriteKit

Начните с рассмотрения SpriteKit Особенности карты тайла. Есть класс под названием SKTileMapNode это может помочь вам создать видимость вашего игрового мира сбоку или сверху вниз.

Apple представила это на WWDC 2016, и сессия видео является хорошей отправной точкой для этого. В Xcode есть хороший редактор для настройки ваших карт плиток, в том числе вариаций конкретных плиток (называемых "вариантами плиток") и добавления метаданных к вашим плиткам. Все это будет полезно здесь.

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

Предпочтительный метод создания групп листов - использовать инструменты редактора в XCode. Однако, если вы хотите работать с поддержкой листов SpriteKit программно, в следующих примерах обсуждаются необходимые шаги.

- Документация Apple, SKTileGroup

Соответственно, вы можете использовать SKTileGroupRule может помочь вам определить правила о том, где класть плитки относительно друг друга программно.

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

Подход CGPath

В этом ответе обсуждается аналогичная ситуация, когда кто-то спрашивал о рисовании кривых для использования с SpriteKit. Он показывает некоторый код для генерации рандомизированных кривых Безье и ссылки на второй ответ с подробным обсуждением обработки CoreGraphics добавления путей к кривым Безье.

Взрывы

Для взрыва плитки, посмотрите на SKEmitterNode, Xcode включает в себя редактор эмиттеров, и вы можете делать с ним классные вещи.

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