Swift iOS игра: создание меню экрана

Создание новой сцены

Существующая сцена GameScene используется для игрового процесса. Для меню необходимо создать новую сцену:

  1. File -> New -> New File.
  2. Выбрать шаблон SpriteKit Scene.
  3. Назвать сцену MainMenu и сохранить её в папке проекта.

Настройка сцены меню

Настроим сцену MainMenu:

  • Установить черный цвет фона.
  • Установить Anchor Point в (0, 0).
  • Выбрать размер iPhone 6s Plus в портретном режиме.

Добавление элементов меню

Добавим элементы меню:

  • Заголовок: UILabel с текстом «Space Space Shooter». Использовать шрифт Helvetica, жирное начертание, увеличить размер.
  • Кнопки: Две кнопки (SKSpriteNode), размером приблизительно 250×50 пикселей, расположенные по центру. Первая запускает новую игру, вторая – выбирает уровень сложности.
  • Текст уровня сложности: UILabel, отображающий начальный уровень сложности (например, «Легкий»).

Уникальные идентификаторы

Для доступа к элементам в коде, добавим им уникальные идентификаторы (name):

  • newgamebutton
  • levelbutton
  • levellabel

Класс MainMenu

Создадим класс MainMenu, подкласс SKScene, для обработки событий:

  1. File -> New -> File.
  2. Выбрать шаблон Cocoa Touch Class.
  3. Назвать класс MainMenu, субклассом SKScene.
  4. Выбрать язык Swift.
  5. Сохранить файл в папке проекта.

Добавление анимации и текстур

В MainMenu.swift:

  • Добавить переменные для доступа к элементам меню (starfield, newgamebutton, levelbutton, levellabel).
  • Добавить анимацию звездного неба (starfield) в центр сцены. Установить particleBirthRate в 10. Добавить уникальный идентификатор starfield.
  • Загрузить изображения кнопок («новая игра» и «уровень сложности») и добавить их в проект. Размер изображений должен соответствовать размеру экрана (3x для iPhone 8 Plus и выше). Установить текстуры кнопок используя textureNamed().

Обработка нажатий

В методе touchesBegan:

  1. Получить первое касание.
  2. Определить координаты касания.
  3. Создать массив nodesAtPoint, содержащий узлы в точке касания.
  4. Проверить имя узла и выполнить соответствующие действия (переход на новую сцену, изменение уровня сложности).
  5. Для перехода на сцену использовать SKTransition с анимацией flipHorizontal или flipVertical.

Адаптация под разные размеры экрана

Использовать UIScreen.main.bounds для получения размеров экрана и SKConstraint.positionX/SKConstraint.positionY для позиционирования элементов. Для игровых объектов (игрок, враги, пули) также использовать UIScreen.main.bounds для корректного отображения.

Сохранение уровня сложности

Использовать UserDefaults для сохранения уровня сложности. Переменная userLevel типа Bool хранит информацию о сложности (true — сложный, false — легкий). Изменять частоту появления врагов в зависимости от уровня сложности.

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

Что будем искать? Например,программа