Чтобы создать вступительную сцену, в которой игрок является частью внутриигрового видео, вам нужно телепортировать игрока в подвал после окончания вступительного внутриигрового видео. Для этого используйте следующий фрагмент кода:
AllPlayers := GetPlayspace().GetPlayers()
for (Agent : AllPlayers):
Teleporter.Teleport(Agent)
Этот фрагмент кода применяет ко всем игрокам на острове определённую функцию. В нашем случае это телепортация.
Телепортация игроков после воспроизведения внутриигрового видео
Создайте новое устройство Verse с именем cutscene_transporter с помощью проводника Verse и перетащите его на уровень. Дважды нажмите на cutscene_transporter.verse в проводнике Verse, чтобы открыть сценарий в Visual Studio Code.
- В определении класса transporter_device добавьте редактируемые поля для следующих устройств:
-
CinemtaicSequence
-
Teleporter
-
PlayerSpawner
cutscene_transporter := class(creative-device):
@editable
CinematicSequence : cinematic_sequence_device = cinematic_sequence_device{}
@editable
Teleporter : teleporter_device = teleporter_device{}
@editable
PlayerSpawner : player_spawner_device = player_spawner_device{}
- Добавьте новый метод
TeleportPlayers()
в классteleport_device
. Этот метод телепортирует каждого игрока в телепорт, который вы установили в нижнем подвале. Добавьте фрагмент кода, приведённый выше, в методTeleportPlayers()
.
TeleportPlayers():void=
AllPlayers := GetPlayspace().GetPlayers()
for (Agent : AllPlayers):
Teleporter.Teleport(Agent)
- В
OnBegin()
подпишитеStoppedEvent
из вашегоCinematicSequence
на методTeleportPlayers()
. Подписка этого события наTeleportPlayers()
позволит устройству прослушиватьStoppedEvent
изCinematicSequence
, а затем выполнять метод TeleportPlayers, приведённый ниже.
OnBegin<override>()<suspends>:void=
Print("Загрузка внутриигрового видео")
CinematicSequence.StoppedEvent.Subscribe(TeleportPlayers)
- Теперь код
teleporter_device
должен выглядеть следующим образом:
using { /Fortnite.com/Devices }
using { /Verse.org/Simulation }
using { /UnrealEngine.com/Temporary/Diagnostics }
## Verse-устройство творческого режима, которое можно разместить на уровне
log_transporter_device := class(log_channel){}
transporter_device := class(creative_device):
@editable
CinematicSequence:cinematic_sequence_device = cinematic_sequence_device{}
@editable
Teleporter : teleporter_device = teleporter_device{}
@editable
PlayerSpawner : player_spawner_device = player_spawner_device{}
## Выполняется при запуске устройства в работающей игре
OnBegin<override>()<suspends>:void=
Print("Загрузка внутриигрового видео")
CinematicSequence.StoppedEvent.Subscribe(TeleportPlayers)
TeleportPlayers():void=
AllPlayers := GetPlayspace().GetPlayers()
for (Agent : AllPlayers):
Teleporter.Teleport(Agent)
-
Сохраните сценарий в Visual Studio Code и в UEFN нажмите Собрать код Verse.
-
Разместите Точку появления игроков на парковке у ресторана «ДаррБургер», а Телепорт — в зоне ожидания в нижнем подвале.
-
Выберите teleport_device в окне Структура и задайте для устройств Последовательность внутриигрового видео, Точка появления игроков и Телепорт соответствующие свойства на панели Сведения.
-
Нажмите Применить изменения, чтобы выполнить игровой тест кода.
Когда будет запущено внутриигровое видео, игрок должен появиться на парковке у ресторана «ДаррБургер». Как только видео закончится, игрок должен быть телепортирован в подвал, где начнётся игра.
Следующий раздел
На следующем шаге этого урока вы узнаете, как использовать внутриигровое видео как для развития сюжета, так и для создания настроения и атмосферы.