Найти тему

Делаем игру про поезда. Часть 6. Постой, паровоз

Оглавление

В прошлой статье мы заставили поезда двигаться. Теперь же реализуем обратное - научим их останавливаться :)

<Механика остановки>

Останавливаться поезда будут конечно же на предназначенных для этого станциях. Еще в третьей статье мы добавили в интерфейс кнопку строительства остановки, но пока никак не использовали ее. Давайте же повесим на нее строительство станции, приближение к которой для локомотива будет сигналом к остановке до полной разгрузки/погрузки поезда грузом или пассажирами. То есть игроку нужно будет учитывать тот факт, что знак остановки действует именно на головной локомотив, а не на вагоны, соответственно необходимо учитывать место остановки чтобы вагоны останавливались именно рядом с нужными местами погрузки/разгрузки. В этом и будет головоломка игры)

<Строительство станции>

Станцию можно поставить только на путях, смысла ставить её за их пределами нет, поэтому сразу ограничим эту возможность для игрока. Сразу накидаем в 3D max модель станции, а в Photoshop текстуры для неё. После всё это дело переносим в Unreal engine и смотрим как получилось.

Модель станции в 3D Max
Модель станции в 3D Max

<Остановка поезда на станции>

При отсутствии товаров погрузки и разгрузки (как в нашем случае) поезд просто останавливается и спустя пару секунд возобновляет движение. Как ни странно, но я долго мучился с этой проблемой, пока не пришел к простому решению. Поскольку мы записываем все опорные точки движения поезда в массив с координатами, мы можем сделать массив с тем, что происходит в этих самых координатах. В этом случае, если на рельсах находится станция, то пишем в массив "1", а если ничего, то "0". Получается если поезд находится там где значение "1", то он останавливается на один шаг (столько сколько он проходит между двумя соседними точками) и после возобновляет движение.

Все эти данные мы так же скидываем вагонам этого поезда, поэтому они теперь делают все то же самое, что и локомотив. Пишем код в Blueprint и смотрим как работает механика.

Отлично, всё работает! Проверяем как поезд будет двигаться и останавливаться от станции к станции, причем для теста ставим станции даже на поворотах.

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

На этом на сегодня всё. Мы реализовали почти все самые главные механики в игре. Дальше будем предусматривать возможность столкновения поездов и, самое главное, погрузку и разгрузку вагонов. Не пропустите!)

Ссылки на прошлые статьи:

Часть 1. Идея игры пришла в плацкарте
Часть 2. Генерация карты
Часть 3. 3D модель паровоза и вагона
Часть 4. Железнодорожные пути
Часть 5. Запускаем движение