Настройка освещения и пространства цветов
Переключение на Linear Space в настройках проекта (File > Build Settings > Player Settings > Color Space) улучшило визуальное восприятие сцены, сделав её более реалистичной. Была решена проблема с тенями, возникавшая из-за наличия двух камер.
Управление оружием (FPS контроллер)
Основной скрипт, отвечающий за стрельбу, — FPS контроллер. Он использует вектор для перемещения пули. Логика создания и перемещения пули описана в отдельном видеоуроке «Как сделать реалистичную стрельбу». В сцене присутствуют «следы» от пули.
Эффекты попадания
При попадании пули в объект создаётся плоскость с текстурой и частицы, имитирующие разлёт материала. Ориентация плоскости рассчитывается по нормали поверхности в точке попадания.
Скрипт AK-12: автоматическая стрельба
Скрипт AK-12 использует переменные состояний, хранящиеся в виде хэшей. Он использует аниматор (Animator) и его слои (Base Layer). Код требует рефакторинга, но его структура понятна.
Важные переменные:
- Состояния оружия: Хранятся с помощью хэшей.
- firePoint: Точка выстрела (корень объекта оружия).
- Аудиоклипы: Для выстрелов и перезарядки.
- ammo: Патроны в магазине.
- magCount: Количество магазинов.
- magSize: Размер магазина.
- Shoot Effect: Эффект выстрела (частицы).
- Impacts: Эффект попадания (не используется).
- Компонент Animator: Получается с помощью GetComponent.
Логика стрельбы
Скрипт отслеживает нажатие левой кнопки мыши и состояние оружия. При наличии патронов происходит выстрел; при их отсутствии — перезарядка. Состояние оружия обновляется с помощью GetAnimatorStateInfo.
Методы стрельбы и перезарядки вызываются через события.
- Shoot(): Отнимает патрон, воспроизводит звук и эффект выстрела, создаёт пулю в точке firePoint с разбросом по осям Y и X. Разброс задаётся случайным углом от -π/2 до π/2.
- Reload(): Воспроизводит звук перезарядки, обновляет количество патронов и магазинов.
Стрельба запускается после события Shot в анимации, обеспечивая синхронизацию.
Прицел и вывод информации
Скрипт отображает прицел и количество патронов на экране.
Задача для зрителей
Добавьте автоматическую стрельбу. Решение разместите в комментариях.
Дальнейшее развитие
Планируется добавление новых фич: AI, инвентарь, покупка оружия.