С первого появления механики постройки в играх, она по сей день преимущественно встречается в жанре стратегий, а вокруг её идеи закладывался фундамент игры - экономика, казармы для войны или тактические оборонительные сооружения.
Взращивая год за годом иммерсивность, механика стала куда более гибкой и интересной, нежели тыкъ на точку и ожидание постройки с пол минуты, отныне её можно запросто встретить хоть в выживалке, хоть в шутере.
Где-то ей присуща модульность, а где-то свобода вплоть до миллиметров и десятых градуса, но любая вариация этой механики довольно проста в реализации.
Отличным примером послужит Rust - там использованы оба решения :
модульная постройка для стен, фундаментов и остальных элементов рукотворных крепостей; свободное размещение сундуков, верстаков и прочих громоздких пользуемых объектов.
- В подавляющем большинстве случаев триггером механики является выбор объекта в интерфейсе, но этот сугубо индивидуальный пункт стоит пропустить.
- Для визуализации происходящего используется шейдер с прозрачностью, он меняется местами с родным шейдером и материалом объекта,
- Определением положения будущего объекта, как оно водится, занимается недлинный луч, испускаемый в сторону взора игрока.
Сам объект как бы липнет к досягаемым поверхностям, ибо его позиция на это время равна точке контакта луча с чем угодно позади, а чтобы он не врезался в объект, на тот же момент работы механики, объекту можно присвоить игнорируемый лучем слой/тэг. - Если объект способен ворочаться чтобы прилипнуть куда угодно, луч спрашивает направление нормали и преобразует его в поворот объекта относительно мировых координат с учетом перпендикулярности к нормали.
- И вот гоняясь за точкой столкновения луча с поверхностью, проверяются условия, мол, может ли объект встать на указанное место.
Если механика реализована в более свободном её варианте с поворотами, вероятнее всего коллайдер объекта в режиме триггер и при пересечении чего либо цвет прозрачного специального материала с шейдером просто меняется например на красный.
- Как оно понятно, если коллайдер физически-осязаем, костылей в коде приубавится, ибо проверкой может объект встать на место или нет, будет заниматься низкоуровневая система столкновений в движке.
- Модульная система постройки не является отдельным вариантом, а является лишь допилом одного из вышеописанных.
Дабы стеночки выстраивались ровно сразу друг к дружке, их необходимо типизировать и отличать, ибо суть допила заключается в том, что при наводке на определенную часть строения, объект к ней не липнет, а получает информацию о новом положении и повороте, что прописаны разработчиком заранее как офсеты.
Беглое описание этой интересной механики навеяно познанием в её сотворении. В случае особой заинтересованности в новой играбельной демке на канале, допилю имеющееся до презентабельного состояния.