Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Unity_в_действии_Джозеф_Хокинг_Рус.pdf
Скачиваний:
83
Добавлен:
21.06.2022
Размер:
26.33 Mб
Скачать

6.5. Заключение      159

Листинг 6.11. Добавление подписчика события в сценарий FPSInput

...

public const float baseSpeed = 6.0f; ¬ Это значение отличается от указанного в листинге 6.10.

...

void Awake() {

Messenger<float>.AddListener(GameEvent.SPEED_CHANGED, OnSpeedChanged);

}

void OnDestroy() { Messenger<float>.RemoveListener(GameEvent.SPEED_CHANGED, OnSpeedChanged);

}

...

private void OnSpeedChanged(float value) { speed = baseSpeed * value;

}

...

Напоследок нам требуется рассылка значений скорости из сценария SettingsPopup в ответ на изменение положения ползунка. Код этой рассылки приведен в следующем листинге.

Листинг 6.12. Рассылка сообщения сценарием SettingsPopup

public void OnSpeedValue(float speed) {

Значение, заданное положением

Messenger<float>.Broadcast(GameEvent.SPEED_CHANGED, speed);

¬ ползунка, рассылается

...

как событие <float>.

Теперь при изменении положения ползунка скорость перемещения врага и игрока будет меняться. Щелкните на кнопке Play и убедитесь сами!

УПРАЖНЕНИЕ: ИЗМЕНЕНИЕ СКОРОСТИ ГЕНЕРИРУЕМЫХ ВРАГОВ

Пока что корректируется только скорость уже присутствующего в сцене врага. Новые враги создаются без учета настроек скорости. Попробуйте самостоятельно задать скорость перемещения генерируемых врагов. Подсказка: добавьте подписчика SPEED_CHANGED всценарий SceneController, так как именно этот сценарий отвечает за появление новых врагов.

Теперь вы знаете, как создать графический интерфейс с помощью предлагаемых Unity инструментов. Это пригодится вам при работе над остальными проектами, а пока мы начнем знакомиться с другими игровыми жанрами.

6.5. Заключение

В Unity поддерживается как система GUI непосредственного режима, так и более новая система, основой которой являются двухмерные спрайты.

Применение двухмерных спрайтов для создания GUI требует наличия в сцене такого объекта, как холст.

UI-элементы можно привязать к различным точкам настраиваемого холста.Свойство Active включает и выключает элементы UI.

Несвязанная система передачи сообщений является замечательным средством передачи событий между интерфейсом и сценой.

7

Игра от третьего

лица: перемещение

и анимация игрока

33 Добавление теней в реальном времени

33 Облет камеры вокруг цели 33 Плавное изменение вращения с помощью алгоритма линейной интерполяции

33 Распознавание поверхности при прыжках, а также с учетом краев и склонов 33 Назначение анимации антропоморфному персонажу и управление ею

Вэтой главе вы запрограммируете еще одну трехмерную игру, но на этот раз в другом жанре. Как вы помните, глава 2 посвящена созданию демонстрационного ролика для игры от первого лица. Сейчас нам предстоит создать еще один демонстрационный ролик, но на этот раз в центре внимания окажутся перемещения персонажа. Самым важным отличием будет положение камеры относительно игрока: в игре от первого лица игрок смотрит на сцену глазами персонажа, в то время как в игре от третьего лица камера находится в стороне от него. Скорее всего, такое представление знакомо вам по серии приключенческих игр Legend of Zelda или по более поздней серии игр Uncharted (виды сцены в игре от первого и от третьего лица сравниваются на рис. 7.3).

Вэтой главе вы создадите один из самых интересных в визуальном отношении проектов книги. Рисунок 7.1 демонстрирует макет будущей сцены. Сравните его с показанным на рис. 2.2 макетом игры от первого лица, с которой в главе 2 началось ваше знакомство с созданием игр в Unity.

Как видите, конструкция комнаты не изменилась, сходным осталось и применение сценариев. Коренные изменения претерпели только вид игрока и положение камеры. Еще раз упомяну аспекты, превращающие происходящее в игру от третьего лица. Это расположение камеры в стороне от персонажа и ее нацеленность в сторону персонажа. Мы воспользуемся вместо примитивной капсулы моделью, имеющей вид человека, так как игроки теперь могут себя видеть.

Игра от третьего лица: перемещение и анимация игрока      161

1.Ра ,

а.

П

2.И а а.

На • а • •

••, •

а, а а •

• • а а •

В • -а .

Та а • а а,

• а• а • •

У а а . О а а

а • • а а,

• а •

На „ а •

• а • а. На

а -а а •

а а, а а „

• а а

( • а• !)

Рис. 7.1. Макет демонстрационного ролика игры от третьего лица

Помните, в главе 4 упоминались такие типы графических ресурсов, как трехмерные модели и анимация? Термин трехмерная модель является практически синонимом сеточного объекта — это статическая форма, определенная вершинами и полигонами (то есть сеточная геометрия). В случае антропоморфного персонажа этой геометрии придается форма головы, рук, ног и пр. (рис. 7.2).

Рис. 7.2. Каркасное представление модели, с которой вы будете работать в этой главе

Как обычно, мы сфокусируемся на последнем пункте нашего плана: программировании объектов в сцене. Вот как выглядит последовательность наших действий:

1.Импорт модели персонажа в сцену.

2.Настройка элементов управления камерой и ее нацеливание на персонажа.

3.Написание сценария, позволяющего персонажу бегать по поверхности.

4.Добавление к сценарию движения возможности прыгать.

5.Воспроизведение анимации на модели на основе ее движений.