год и 5 месяцев назад
Разбрасываем объекты в Unity с физикой
Что это за инструмент?
Вручную раскидывать камни, ящики, мусор и другие объекты по сцене — скучно и долго. Мы сделали Editor Tool, который делает это автоматически: спавнит, разбрасывает и даёт физике всё красиво разложить.
Как работает?
Открываем наше окно управления Tools/Разброс объектов
Добавляем префабы в специальное окно Drag&Drop.
Задаем параметры: высоту спавна, дистанцию между объектами.
Зажимаем Ctrl + ЛКМ в сцене — объект появляется с разбросом.
Запускаем симуляцию, ждем, пока физика всё разложит.
Сохраняем результат или откатываем, если не понравилось.
Где применять?
Этот инструмент полезен для расстановки предметов в сцене:
Камни в окружении.
Ящики, бочки, мусорные кучи в...
Разбрасываем объекты в Unity с физикой
Что это за инструмент?
Вручную раскидывать камни, ящики, мусор и другие объекты по сцене — скучно и долго. Мы сделали Editor Tool, который делает это автоматически: спавнит, разбрасывает и даёт физике всё красиво разложить.
Как работает?
Открываем наше окно управления Tools/Разброс объектов
Добавляем префабы в специальное окно Drag&Drop.
Задаем параметры: высоту спавна, дистанцию между объектами.
Зажимаем Ctrl + ЛКМ в сцене — объект появляется с разбросом.
Запускаем симуляцию, ждем, пока физика всё разложит.
Сохраняем результат или откатываем, если не понравилось.
Где применять?
Этот инструмент полезен для расстановки предметов в сцене:
Камни в окружении.
Ящики, бочки, мусорные кучи в...
год и 5 месяцев назад
Наследование в Unity на примере системы оружия
Как использовать наследование для создания системы оружия в Unity
В любой игре с боевой системой есть разные виды оружия: мечи, луки, огнестрел. Вместо того, чтобы дублировать код для каждого типа оружия, мы можем использовать наследование, чтобы создать гибкую и расширяемую систему.
Сегодня мы создадим базовый класс оружия и несколько его подклассов с разными механиками атаки.
Базовый класс Weapon
Создадим базовый класс Weapon, который будет содержать общие характеристики и методы:
Этот класс определяет имя оружия, урон, перезарядку атаки и саму атаку. Теперь создадим разные виды оружия.
Ближнее оружие (MeleeWeapon)
Создадим класс для ближнего оружия,...
Наследование в Unity на примере системы оружия
Как использовать наследование для создания системы оружия в Unity
В любой игре с боевой системой есть разные виды оружия: мечи, луки, огнестрел. Вместо того, чтобы дублировать код для каждого типа оружия, мы можем использовать наследование, чтобы создать гибкую и расширяемую систему.
Сегодня мы создадим базовый класс оружия и несколько его подклассов с разными механиками атаки.
Базовый класс Weapon
Создадим базовый класс Weapon, который будет содержать общие характеристики и методы:
[код в полном посте]
Этот класс определяет имя оружия, урон, перезарядку атаки и саму атаку. Теперь создадим разные виды оружия.
Ближнее оружие (MeleeWeapon)
Создадим класс для ближнего оружия,...
год и 10 месяцев назад
Расширения TryGetComponent для поиска компонентов в Unity
При разработке игр на Unity часто возникает необходимость поиска компонентов на дочерних объектах. Обычно для этих целей используются методы GetComponentInChildren, однако они не предоставляют удобного способа проверить, был ли компонент найден. В стандартных ситуациях это может привести к необходимости дополнительной проверки на null, что загромождает код.
Чтобы сделать код чище и понятнее, можно создать методы расширения, аналогичные TryGetComponent, но для поиска компонентов в дочерних объектах. Вот пример кода:
Разберём, как это работает:
TryGetComponentInChildren:
Эти методы расширения проверяют наличие компонента в дочерних объектах с помощью GetComponentInChildren.
Если компонент найден, он...
Расширения TryGetComponent для поиска компонентов в Unity
При разработке игр на Unity часто возникает необходимость поиска компонентов на дочерних объектах. Обычно для этих целей используются методы GetComponentInChildren, однако они не предоставляют удобного способа проверить, был ли компонент найден. В стандартных ситуациях это может привести к необходимости дополнительной проверки на null, что загромождает код.
Чтобы сделать код чище и понятнее, можно создать методы расширения, аналогичные TryGetComponent, но для поиска компонентов в дочерних объектах. Вот пример кода:
[код в полном посте]
Разберём, как это работает:
TryGetComponentInChildren:
Эти методы расширения проверяют наличие компонента в дочерних объектах с помощью GetComponentInChildren.
Если компонент найден, он...
год и 10 месяцев назад
Использование HashSet вместо поиска объекта по имени в Unity
Когда мы разрабатываем игры в Unity, часто возникает необходимость работать с различными объектами, управлять их состоянием или проверять их наличие в определенных группах. На начальных этапах многие разработчики склонны искать объекты по имени, используя методы вроде GameObject.Find() или transform.Find(). Но стоит ли всегда так делать? Давайте рассмотрим, почему использование HashSet — это более оптимальный и безопасный подход.
1. Производительность
Методы поиска по имени, такие как GameObject.Find() или FindObjectOfType(), проходят по всему сценарию, просматривая все объекты до тех пор, пока не найдут нужный. Это особенно проблематично в сценах с большим количеством объектов, где поиск по имени становится узким местом производительности.
Использование HashSet вместо поиска объекта по имени в Unity
Когда мы разрабатываем игры в Unity, часто возникает необходимость работать с различными объектами, управлять их состоянием или проверять их наличие в определенных группах. На начальных этапах многие разработчики склонны искать объекты по имени, используя методы вроде GameObject.Find() или transform.Find(). Но стоит ли всегда так делать? Давайте рассмотрим, почему использование HashSet — это более оптимальный и безопасный подход.
1. Производительность
Методы поиска по имени, такие как GameObject.Find() или FindObjectOfType(), проходят по всему сценарию, просматривая все объекты до тех пор, пока не найдут нужный. Это особенно проблематично в сценах с большим количеством объектов, где поиск по имени становится узким местом производительности.
год и 11 месяцев назад
Автоматическое переключение музыки с плавным переходом в Uni
Музыкальное сопровождение играет важную роль в создании атмосферы игры. Важно, чтобы музыка не прерывалась и звучала плавно, даже когда треки переключаются. В этом посте мы рассмотрим, как создать систему автоматического переключения музыки с кроссфейдом в Unity, используя два аудиоисточника.
Для этой задачи мы будем использовать две аудиодорожки (AudioSource), что позволит нам плавно переключаться между треками. В этом подходе используется кроссфейд — плавное уменьшение громкости текущего трека и одновременное увеличение громкости следующего.
Для этого создаём пустой GameObject, можно переименовать в AudioController к примеру, установить ниже указанный скрипт, а так же добавить два компонента AudioSource, это важно! Ниже...
Автоматическое переключение музыки с плавным переходом в Uni
Музыкальное сопровождение играет важную роль в создании атмосферы игры. Важно, чтобы музыка не прерывалась и звучала плавно, даже когда треки переключаются. В этом посте мы рассмотрим, как создать систему автоматического переключения музыки с кроссфейдом в Unity, используя два аудиоисточника.
Для этой задачи мы будем использовать две аудиодорожки (AudioSource), что позволит нам плавно переключаться между треками. В этом подходе используется кроссфейд — плавное уменьшение громкости текущего трека и одновременное увеличение громкости следующего.
Для этого создаём пустой GameObject, можно переименовать в AudioController к примеру, установить ниже указанный скрипт, а так же добавить два компонента AudioSource, это важно! Ниже...




