В прошлой статье мы заставили поезда двигаться. Теперь же реализуем обратное - научим их останавливаться :)
<Механика остановки>
Останавливаться поезда будут конечно же на предназначенных для этого станциях. Еще в третьей статье мы добавили в интерфейс кнопку строительства остановки, но пока никак не использовали ее. Давайте же повесим на нее строительство станции, приближение к которой для локомотива будет сигналом к остановке до полной разгрузки/погрузки поезда грузом или пассажирами. То есть игроку нужно будет учитывать тот факт, что знак остановки действует именно на головной локомотив, а не на вагоны, соответственно необходимо учитывать место остановки чтобы вагоны останавливались именно рядом с нужными местами погрузки/разгрузки. В этом и будет головоломка игры)
<Строительство станции>
Станцию можно поставить только на путях, смысла ставить её за их пределами нет, поэтому сразу ограничим эту возможность для игрока. Сразу накидаем в 3D max модель станции, а в Photoshop текстуры для неё. После всё это дело переносим в Unreal engine и смотрим как получилось.
<Остановка поезда на станции>
При отсутствии товаров погрузки и разгрузки (как в нашем случае) поезд просто останавливается и спустя пару секунд возобновляет движение. Как ни странно, но я долго мучился с этой проблемой, пока не пришел к простому решению. Поскольку мы записываем все опорные точки движения поезда в массив с координатами, мы можем сделать массив с тем, что происходит в этих самых координатах. В этом случае, если на рельсах находится станция, то пишем в массив "1", а если ничего, то "0". Получается если поезд находится там где значение "1", то он останавливается на один шаг (столько сколько он проходит между двумя соседними точками) и после возобновляет движение.
Все эти данные мы так же скидываем вагонам этого поезда, поэтому они теперь делают все то же самое, что и локомотив. Пишем код в Blueprint и смотрим как работает механика.
Отлично, всё работает! Проверяем как поезд будет двигаться и останавливаться от станции к станции, причем для теста ставим станции даже на поворотах.
На этом на сегодня всё. Мы реализовали почти все самые главные механики в игре. Дальше будем предусматривать возможность столкновения поездов и, самое главное, погрузку и разгрузку вагонов. Не пропустите!)
Ссылки на прошлые статьи:
Часть 1. Идея игры пришла в плацкарте
Часть 2. Генерация карты
Часть 3. 3D модель паровоза и вагона
Часть 4. Железнодорожные пути
Часть 5. Запускаем движение