Video Thumbnail

How to Create a Multiplayer Pong Game in Unity for Android

MonkeyKidGC41:19
https://www.youtube.com/watch?v=poC3JMLQRBA

Содержание

Краткое резюме

  • Создаётся многопользовательская игра Pong для Android в Unity.
  • Проект настраивается под разрешение iPhone 8, создаются игровые объекты: мяч, ракетки и границы с физическими коллайдерами.
  • Добавляются физические материалы с нулевым трением и максимальной отдачей для реалистичных столкновений.
  • Пишутся скрипты управления мячом и ракетками с плавным движением и ограничениями по границам экрана.
  • Реализуется система подсчёта очков с UI-элементами, стартовый и экран окончания игры с кнопками для управления игрой.
  • Добавляется поддержка сенсорного управления для Android с разделением управления двумя ракетками по положению касания.
  • Описан процесс сборки APK и публикации игры в Google Play Store.

Настройка проекта и создание игровых объектов 🎮

Для начала создаётся новый 2D-проект Unity, нацеленный на Android, с установкой SDK, NDK и JDK. В проекте устанавливается разрешение под iPhone 8 (1334×750) для оптимального отображения игры.

Фон меняется с синего на серый, создаётся папка sprites для хранения игровых ассетов. В качестве игровых объектов используются стандартные формы: круг (мяч) и квадрат (ракетка), чтобы не создавать собственную графику.

Ракетка собирается из трёх частей: верхний и нижний "концы" (круги) и центральная часть (квадрат), которые размещаются и масштабируются так, чтобы напоминать классическую ракетку Pong. Все части ракетки объединяются в пустой игровой объект для удобства управления.


Границы игрового поля и физика ⚡

Для ограничения движения мяча создаются четыре границы: слева, справа, сверху и снизу. Каждая граница — это пустой объект с добавленным 2D коллайдером BoxCollider2D, расположенным сразу за краем камеры.

На мяч добавляется CircleCollider2D и RigidBody2D для физической симуляции. Для ракеток также добавляется RigidBody2D (с режимом Kinematic для управления через скрипт) и CapsuleCollider2D, покрывающий всю длину ракетки с небольшим запасом, чтобы игроку не мешали мелкие неточности попаданий.

Создаётся материал с нулевым трением и максимальной упругостью (bounciness = 1), который применяется ко всему: к мячу, ракеткам и стенам. Это обеспечивает эффективный отскок мяча без замедления.

«Материал с нулевым трением и максимальной упругостью гарантирует, что мяч отскакивает, не теряя скорость.»


Скрипты управления мячом и ракетками 🖥️

Скрипт BallController:

  • Содержит настройки силы импульса (thrust), задаёт направление и движение мяча через добавление силы в RigidBody2D.
  • При старте мяча сила параметризуется в редакторе (например, 50) и применяется в случайном направлении (гарантируется случайность, мяч не всегда идёт в одну сторону).

Скрипт PaddleController:

  • Управляет движением ракетки только по оси Y.
  • Использует плавную интерполяцию позиции (Lerp), чтобы движение не было резким.
  • Добавлено ограничение позиции (clamp), чтобы ракетка не выходила за пределы видимой области.
  • Позиция ракетки обновляется каждый кадр в методе Update.

Для второй ракетки достаточно продублировать первую и инвертировать координату по X, чтобы расположить ее с другой стороны экрана.


Система подсчёта очков и UI 📊

Создается канвас с экранным пространством, который "привязывается" к камере для стабильного отображения UI в любой конфигурации. На канвасе добавляются:

  • Текстовые объекты для отображения очков игроков, расположенные слева и справа вверху.
  • Игровая логика увеличивает счет при столкновении мяча с краями игрового поля за ракеткой соперника (OnCollisionEnter2D в скрипте ScoreZone).
  • При наборе 7 очков появляется экран окончания игры с кнопкой перезапуска.

Обновление текста происходит через изменение значения в UI Text, привязанном к переменной в скрипте.

«Очки растут при попадании мяча за ракетку соперника — это простая и понятная механика подсчёта.»


Начало игры и управление экранами 🎬

Для запуска игры создается стартовый экран с чёрным фоном и кнопкой "Play", которая:

  • Скрывает стартовый экран.
  • Включает мяч (который изначально выключен, чтобы не начинать движение сразу).

Экран окончания игры (Game Over):

  • Полупрозрачный, чтобы видны были текущие очки и объекты.
  • С кнопкой рестарта, которая через отдельный скрипт перезагружает сцену.
  • Активируется при достижении одного из игроков 7 очков.

Для корректного отображения UI в разных разрешениях все элементы привязываются (anchored) к нужным углам экрана, что предотвращает "прыжки" объектов при смене разрешения.


Поддержка мультисенсорного управления для Android 📱

После переключения платформы на Android подключается поддержка сенсорного управления:

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

«Два игрока могут одновременно управлять ракетками по обеим сторонам экрана, что идеально для Android-устройств.»


Сборка и публикация игры для Android 🎯

Для сборки играет важную роль правильная настройка в Player Settings:

  • Вводятся данные компании, версия, иконки.
  • Фиксируется ориентировка экрана — выключаются портретные режимы, игра всегда в ландшафтной ориентации.

В Build Settings добавляется основная сцена, после чего создаётся APK или AAB:

  • APK можно установить вручную на устройство.
  • AAB нужен для публикации в Google Play Store.

В процессе разработки можно использовать приложение Unity Remote для тестирования касаний и управления прямо на смартфоне, не создавая полный билд.


Итоги и рекомендации 🏁

В данном уроке показан полный цикл создания мультиплеерной игры Pong под Android на Unity — от создания и настройки сцены до обработки ввода и UI. Все ключевые элементы взаимосвязаны и структурированы для легкого понимания и масштабирования:

  • Чистая организация папок и объектов.
  • Использование физических материалов для реалистичных столкновений.
  • Плавное управление и ограничение движения ракеток.
  • UI с подсчетом очков и экранами начала и окончания игры.
  • Поддержка мультисенсорного управления для двух игроков.
  • Подготовка финального билда и его публикация.

«Теперь у вас есть полностью функциональная игра Pong для Android, готовая к игре с друзьями или публикации в Google Play.»


🔥 Удачи в разработке и улучшении вашей игры!