- Главная
- Форум
- Вопросы
- Общие вопросы по Unreal Engine
- Как изменить точку появления персонажа в Unreal Engine
Как изменить точку появления персонажа в Unreal Engine
Как изменить точку появления персонажа в Unreal Engine?
RE: Как изменить точку появления персонажа в Unreal Engine
Изменить точку появления (спавна) персонажа в Unreal Engine можно несколькими способами: от использования стандартных объектов Player Start до реализации собственной системы спавна.
Самый простой и наиболее распространенный способ — использовать объекты Player Start. Для этого откройте окно Place Actors, найдите объект Player Start и разместите на уровне необходимое количество точек появления.
По умолчанию Unreal Engine самостоятельно выбирает одну из доступных точек спавна Player Start в соответствии с логикой класса GameMode.
Если необходимо, чтобы игрок всегда появлялся в определённом месте, каждой точке Player Start можно назначить уникальный тег. Для этого выделите нужный объект, откройте панель Details и в разделе Actor → Tags добавьте тег, например: Spawn_Start, Checkpoint_01.
Затем в классе GameMode необходимо переопределить функцию Find Player Start, чтобы она возвращала точку появления с нужным тегом.
Внутри функции вызовите узел Get All Actors of Class with Tag, указав класс Player Start и нужный тег, например Spawn_Start. Полученный массив проверьте на пустоту с помощью узлов Length > 0 и Branch. Если массив содержит хотя бы один элемент, извлеките первый объект с помощью узла Get (a Copy) (индекс 0) и подключите его к параметру Return Value узла Return Node функции Find Player Start.
Если массив пуст, выполните стандартную логику движка, вызвав узел Parent: Find Player Start. Добавить его можно через контекстное меню, щелкнув правой кнопкой мыши в графе функции Find Player Start.
------------
Если же переход между уровнями выполняется с помощью узла Open Level, существует более простой способ выбора точки появления.
В этом случае используется не обычный Actor Tag, а специальное свойство Player Start Tag, расположенное в панели Details объекта Player Start. Не путайте его с разделом Actor → Tags — это разные параметры.
Задайте нужной точке появления значение Player Start Tag, например Spawn_Start. При вызове узла Open Level передайте в параметр Options строку: ?Portal=Spawn_Start, где Spawn_Start — значение свойства Player Start Tag.
После загрузки уровня Unreal Engine автоматически сравнит значение параметра Portal со значениями Player Start Tag всех объектов Player Start на уровне и выберет точку появления с совпадающим тегом.
Например, если вызвать Open Level с параметром: Options = ?Portal=Spawn_Start, то после загрузки уровня персонаж автоматически появится в точке спавна с тегом Spawn_Start. В этом случае переопределять функцию Find Player Start не требуется.
------------
Также для реализации системы контрольных точек (Checkpoint) точку появления персонажа можно изменять непосредственно во время игры.
Обычно для этого создается переменная типа Transform, в которой сохраняется положение последнего активированного чекпоинта. Ее можно хранить в GameMode, PlayerState, GameInstance или другом подходящем классе.
Когда игрок активирует контрольную точку, ее координаты записываются в эту переменную. После уничтожения персонажа можно создать нового игрока в сохраненной позиции с помощью узла Spawn Actor from Class или функции Restart Player at Transform. Если персонаж не уничтожается, а остается существовать, его можно просто переместить с помощью узлов SetActorLocation и SetActorRotation.
Если же требуется полный контроль над процессом появления персонажа, можно реализовать собственную систему спавна в классе GameMode. В качестве точки входа обычно используются события данного класса PostLogin, Handle Starting New Player, RestartPlayer или другое пользовательское событие.
Далее с помощью узла Spawn Actor from Class создается экземпляр персонажа, которому через параметр Spawn Transform передаются координаты, поворот и другие необходимые параметры.
После создания персонажа необходимо вызвать узел Possess, чтобы соответствующий Player Controller получил управление новым объектом.
Такой подход позволяет реализовать практически любую систему появления игроков: случайный выбор точки спавна, возрождение рядом с союзниками, командные точки появления, респавн после смерти, загрузку сохранений, систему контрольных точек или собственные игровые режимы.
Более подробно изучить класс GameMode Вы можете в статье:
Класс Game Mode в Unreal Engine
===============
Зарегистрироваться в ЛК и скачать книгу по Blueprint: [Blueprint. Взгляд с высоты «птичьего полёта»]
