Организация сцены и объектов
Сцена содержит корневой объект Player, отвечающий за передвижение по оси X (поворот мыши влево-вправо) и навигацию. Дочерним объектом является объект камеры, управляющий поворотом по оси Y (вверх-вниз). Этот объект содержит оружие и дополнительные камеры.
Используются две камеры: Main Camera и Weapon Camera. Эта схема предотвращает исчезновение оружия при приближении к объектам. Сочетание клавиш Ctrl+Shift+P ставит Unity на паузу. Оружие находится внутри куба, но благодаря использованию двух камер отображается корректно.
Main Camera имеет отключенный слой Weapon в Culling Mask, делая оружие невидимым. Weapon Camera рендерит только слой Weapon и имеет значение Depth, превышающее значение основной камеры. В результате оружие рендерится поверх всего остального, обеспечивая плавное отображение. Оружие расположено на слое Weapon.
Модель оружия и анимация
Модель оружия (AK-12) — единый объект, включающий руки и оружие. Файл модели (.blend) открывается в Blender, где видна его структура. Замена оружия требует замены всей модели и анимаций. Используются одни и те же модели рук, меняются только модели оружия и анимации.
В Blender доступны анимации: idle (ожидание), перезарядка, стрельба и другие. Изменения в Blender автоматически подгружаются в Unity.
Управление анимацией и звуком
На модели оружия расположены скрипт управления, аудиоисточники и аниматор. Аниматор использует систему Mecanim с контроллером анимаций. Переходы между анимациями настроены плавно, с минимальными скачками. Используются триггеры для переходов между анимациями, что позволяет управлять ими без прямого вмешательства скриптов.
Ивенты синхронизируют анимации и звуки: начало перезарядки, извлечение оружия, действия с обоймой.
Звуки: выстрел с глушителем (из Counter-Strike), выстрел без глушителя (из FreeSound), звуки работы затвора (bpol), извлечения обоймы и другие. Они привязаны к ивентам на таймлайне анимации, вызывая соответствующие методы в скрипте оружия (AK12).
В этой части описаны структура сцены, организация объектов и анимаций в Unity-проекте. В следующей части будет подробно рассмотрено использование скриптов.