Технота: новые инструменты на старый лад
Недавно я проводил индивидуальное занятие по Unreal Engine, на котором я показывал принципы написания собственного инструмента для озвучивания различных извилистых элементов ландшафта, по типу рек, береговой линии и т.д.
Идея инструмента довольно проста: суть сводится к тому, что у нас есть сплайн, которым мы можем очерчивать контур ландшафта, к нему прикреплен аудиоэммитер и прописана логика, что этот аудиоэммитер должен искать ближайшую точку на сплайне по отношению к нашему листенеру, тем самым получается эффект скольжения эмиттера по сплайну, сродни поезду на монорельсе.
И тут я подумал о том, что могу довольно просто масштабировать имеющийся материал и сделать другие инструменты, и это вылилось в BP_ZoneEmmiterCollision: принцип тот же, но вместо сплайна - бокс-коллайдер (это может быть любая доступная в компонентах BP форма), который следует по границам коллизии за листенером, ища ближайшую точку, а когда персонаж пересекает грани, то аудиоэммитер аттачится к нему.
Я захотел больше гибкости и пришел к тому, что сплайн может быть закрытый, и им можно довольно изящно очерчивать зоны. Как итог BP_AudioCloseSpline. Интересный момент в том, что коллизии в данном инструменте не используются: есть возможность просчитать, находится ли наш персонаж внутри сплайна или нет. Как итог, аудиоэммитер блуждает по очерченным границам сплайна и аттачится к листенеру, когда персонаж пересекает их.
Подобные инструменты довольно хорошо помогают в озвучивании эмбиента, учитывая различные формы ландшафта, а возможность проигрываться в двух режимах - 3D, когда персонаж за границами, и в 2D, когда внутри них - помогает делать звучание эмбиента связным между собой.
Функционал написан на Blueprint, запускает нативные метасаунды и довольно легко кастомизируется и переводится на аудиодвижки. Можно задать функционал включения/выключения реверберации, стейтов и снепшотов, переназначение на какой объект аттачится эммитер и т.д.
По итогу доволен, как слон - обзавёлся двумя новыми инструментами и материалом, который дополнит курс по Unreal Engine.
#Технота #UnrealEngine
Post #84
256