Теперь, когда наша сцена закончена, мы более подробно рассмотрим некоторые дополнительные возможности, которые Вам могут понадобиться при разработке игры.
Состояния сцены
WME может автоматически запоминать состояния различных объектов сцены и загружать их, когда пользователь возвращается на эту сцену. Эта возможность включается в диалоговом окне свойств сцены в программе SceneEdit. Вы также можете указать WME запоминать спрайты, которые используют объекты сцены, если Вы меняете их программно.
Следует отметить, что запоминание состояний объектов основано на их названиях. Т. е., не может быть двух объектов в сцене с одинаковыми названиями, в противном случае это может привести к непредсказуемым результатам.
Переход на другую сцену
Вероятно, действие Вашей игры не будет проходить только лишь в одной комнате. Вы уже знаете, как создавать сцены, но как осуществлять их взаимодействие? Для этого WME использует язык сценариев. Давайте попробуем. Мы уже сделали активной дверь на шаге 7. Выберите регион «door» в списке узлов и щёлкните кнопку «Сценарии...» («Scripts...»). Т. к. для двери ещё не создано ни одного сценария, SceneEdit предложит Вам создать новый сценарий. Выберите шаблон «объект сцены» («scene object») и нажмите OK. Будет создан новый сценарий «door.script». Появится диалоговое окно сценария. Дважды щёлкните на названии «door.script» или нажмите кнопку «Редактировать сценарий» («Edit script»).
Сценарий откроется в текстовом редакторе. Вы увидите несколько обработчиков событий, созданных по умолчанию. Нам нужно чтобы дверь реагировала только на левый щелчок мыши. Удалите все обработчики событий. Вы можете оставить только функцию GoToObject. Позже Вы можете отредактировать её так, чтобы персонаж подходил к двери (мы рассмотрели это на шаге 7).
Теперь нам нужно только добавить обработчик левого щелчка мыши, который заставит персонажа подойти к двери и попасть в другую сцену. Добавьте в сценарий следующий программный код:
on "LeftClick" { GoToObject(); Game.ChangeScene("scenes\menu\menu.scene"); } |
В первой строке будет вызвана функция GoToObject, которая отправит персонажа к двери, а вторая строка скажет игре, что нужно загрузить новую сцену «scenes\menu\menu.scene».
Посмотрите проект WME demo для полного представления.
Задание координат и направлений для события «Walk»
На предыдущих шагах мы использовали функцию GoToObject, чтобы персонаж подошёл к определённому объекту сцены. Есть более простой метод. Вы можете задавать координаты для каждого объекта сцены, к которому должен подойти персонаж, непосредственно в программе SceneEdit.
Давайте попробуем это на двери. Выберите объект «door» в списке узлов и обратите внимание на окно свойств объекта:
Здесь Вы можете ввести верные координаты и направление персонажа. Их можно получить с помощью инструмента размещения персонажа, описанного на шаге 6. Чтобы это сделать, поставьте персонаж в нужную точку и нажмите кнопку «<», чтобы скопировать его координаты.
В сценарии Вам нужно будет только вызвать метод actor.GoToObject и персонаж подойдёт к указанному объекту. Нащ сценарий door.script будет выглядеть следующим образом:
on "LeftClick" { actor.GoToObject(this); Game.ChangeScene("scenes\menu\menu.scene"); } |
Так как сценарий привязан к объекту «дверь», переменная this указывает именно на него. Первая строка говорит персонажу, что нужно «подойти к двери». Персонаж будет использовать координаты и направление, заданные в программе SceneEdit для объекта «дверь».