Devlog без QA | Розробка ігор – Telegram
Devlog без QA | Розробка ігор
641 subscribers
204 photos
61 videos
402 links
Unity/Новини/Ідеї/Натхнення й інший якісний (а можливо і не дуже) контент тут!

Зв’язок: @DevAndrew

Анти-скам бот: @IndieSafeBot
Download Telegram
🔍 [SerializedField], [Header], #region, event в Unity — не просто декорації!

Ці “маленькі речі” можуть значно поліпшити якість коду, зручність роботи в інспекторі та структуру проєкту. Якщо пишеш скрипти в Unity — без них як без кави зранку ☕️.

🧠 Що таке [SerializedField]?
Це атрибут, який дозволяє бачити приватні змінні в інспекторі.
Тобто змінна залишається закритою для інших класів, але її можна налаштувати в Unity.
[SerializeField] private float speed = 10f;

Перевага: інкапсуляція + гнучкість у редакторі.

📌 [Header("Твій заголовок")]
Додає зручні підписи до блоків змінних в інспекторі.
[Header("Налаштування руху")]
[SerializeField] private float speed;

Перевага: чистіший і зрозуміліший інспектор.

📦 #region ... #endregion
#region Рух гравця
void Move() { }
#endregion

Перевага: менше хаосу в редакторі.

🔄 OnEnable, OnDisable, OnDestroy — ключі до контролю життєвого циклу!
Ці методи допомагають керувати поведінкою компонентів у потрібний момент:

private void OnEnable() { }  // Коли об'єкт або скрипт активуються  

private void OnDisable() { } // Коли об'єкт або скрипт деактивуються

private void OnDestroy() { } // Перед остаточним знищенням об'єкта


Переваги: ідеально підходять для підписки та відписки від івентів, запуску та зупинки корутин або очищення ресурсів, що запобігає помилкам і витокам пам’яті.

💡 Висновок:
Ці прості інструменти як порядок у шафі: не обов'язкові, але неймовірно спрощують життя.


💻 | GAMEDEV UA | #уроки #SerializedField #CodeQuality
5👍1
Sc-Fi pack

Можливо комусь пригодиться 👇

Завантажити ▶️

💻 | GAMEDEV UA | #корисне #аудіо
25
💥 ТОП-7 помилок початківців у розробці ігор

Розробка ігор це кайф, але на старті багато хто залітає в ті самі пастки.
Хочеш зробити свою першу гру? Тоді читай, як не зламатися ще до релізу 👇

🎯 1. Починають з “своєї мрії” — одразу AAA
"Мій перший проєкт — це відкритий світ, сюжет, мультиплеєр, RTX, 100 годин контенту…"
Звучить круто, але це прямий шлях до вигорання.
Почни з малого. Навіть простий клон гри уже досвід, особливо на початку шляху.

🧱 2. Відсутність базового плану
Пишуть код “на ходу”, без прототипів і етапів.
Потім самі не розуміють, що роблять.
Навіть простий список задач у блокноті/word-і вже рятує.

🚫 3. Ігнорують прототипування
Тижнями малюють меню, а геймплей ще не працює.
Спочатку: "А чи цікаво це грати?"
Графіка почекає.

👾 4. Занадто складна механіка на старті
Роблять інвентар, систему прокачки, онлайн-магазин усе одразу.
80% не доходять навіть до ігрової петлі.
Спочатку зроби базову ідею, а потім навішуй функції.

🧠 5. Не тестують на реальних людях
"Я сам знаю, що це круто". Але грати ніхто не хоче.
Дай гру друзям, геймдев-спільноті головне, фідбек.

🐌 6. Не думають про оптимізацію (Таке буває?)
Навіть 2D-гру можна змусити лагати, якщо ігнорити продуктивність.
Мінімальна увага до ресурсів = максимум шансів на стабільний проєкт.

📦 7. Відсутність порядку в проєкті
Код без коментарів, активи без структури, хаос у назвах.
Порядок сьогодні — спокій завтра.

💡 Висновок:
Усі помиляються. Але краще на чужих помилках, ніж на своїх нервах.
Не починай з “мега-гри”. Почни з гри, яку реально завершити. Окремо виділити хотілось би другий пункт.

Навіть простий список типу:

меню → геймплей → рівні → перемога/поразка - вже вирівнює фокус, економить час і зменшує стрес.

А розкажіть про свій досвід у розробці перших ігор. Як це відбувалось? Пишіть нижче 👇

💻 | GAMEDEV UA | #запитання #першагра #помилки
8👍4💩1
🧠 Переосмислення архітектури в Unity: від монобехів до чистої логіки

MonoBehaviour — це базовий клас Unity, від якого успадковуються всі скрипти, що працюють з об’єктами на сцені. Саме MonoBehaviour дає доступ до таких важливих подій, як Start(), Update(), OnTriggerEnter() та інші, і відповідає за зв’язок коду з ігровим світом Unity.

Але MonoBehaviour — це не сама логіка гри, а лише оболонка, яка з’єднує чисті дані та бізнес-логіку з ігровою сценою. Тож важливо не «запихати» всю логіку в один монобех, а розділяти відповідальність.

Замість «об’єкт на сцені робить усе» варто мислити гру як набір даних і систем, які їх обробляють. Цей підхід схожий на MVC, MVVM чи ECS, де логіка й дані важливіші за візуалізацію.

Новачок пише все в Player.Update(), досвідчений розробник розділяє: дані в одному місці, логіку в системах, а представлення окремо.

🧩 Розділення відповідальності: SRP та відмова від моноліту
Одне з головних правил — Single Responsibility Principle (SRP): кожен клас має відповідати лише за одну конкретну задачу. Проблема Unity-початківців, що всі функції збираються в один великий MonoBehaviour.

Краще мати кілька маленьких класів, наприклад: MovementController, WeaponController, Health. Навіть якщо це MonoBehaviour-компоненти — вони розподіляють обов’язки, легше їх тестувати і підтримувати.

🔄 Практичний приклад: від монобеха до чистого класу
Уявімо клас здоров'я героя:
public class Enemy : MonoBehaviour {
public int maxHP = 100;
private int currentHP;

void Start() {
currentHP = maxHP;
}

public void TakeDamage(int damage) {
currentHP -= damage;
if (currentHP <= 0) {
Die();
}
}

void Die() {
Destroy(gameObject);
}
}

Тут логіка і дані змішані, тестувати складно, повторно використовувати теж.

Після (логіка у чистому класі, MonoBehaviour лише оболонка):
using System;

public class Health {
public int MaxHP { get; }
public int CurrentHP { get; private set; }

public event Action OnDeath;

public Health(int maxHP) {
MaxHP = maxHP;
CurrentHP = maxHP;
}

public void TakeDamage(int damage) {
CurrentHP -= damage;
if (CurrentHP <= 0) {
OnDeath?.Invoke();
}
}
}

public class HealthBehaviour : MonoBehaviour {
private Health health;

void Start() {
health = new Health(100);
health.OnDeath += Die;
}

void Die() {
Destroy(gameObject);
}

public void TakeDamage(int dmg) {
health.TakeDamage(dmg);
}
}

🚀 Як перейти від монобеха до чистих класів?
Основна ідея: логіку і дані винести в звичайні C# класи, а MonoBehaviour зробити тонким «містком» між грою і Unity.
• Визначте основні підсистеми: рух, здоров'я, атака, інвентар тощо
• Для кожної зробіть окремий клас без MonoBehaviour
• У MonoBehaviour створюйте їхні екземпляри і делегуйте їм роботу
• Залишайте Unity-специфічні речі (Instantiate, Destroy) у MonoBehaviour
• Використовуйте події для повідомлення про зміни

⚠️ Чому варто уникати Singleton’ів на MonoBehaviour?
Singleton виглядає зручно глобальний доступ через Instance. Але це призводить до:
• Скритих залежностей і проблем підтримки
• Порядку ініціалізації, який важко контролювати
• Ускладнення тестування
• Перевантаження одного класу всіма функціями — «God Object»
• Краще явно передавати залежності через поля або конструктори, використовувати події і сервіси.

🌟 Підсумок

MonoBehaviour — це лише місток до Unity-сцени, тож основну логіку, дані й процеси варто виносити у чисті C# класи. Розділяйте відповідальність між маленькими спеціалізованими класами, використовуйте події для зв’язку з Unity і уникайте синглтонів, так код буде легше тестувати й масштабувати.

💻 | GAMEDEV UA | #уроки #OOP #SRP #ECS #CodeDesign #Оптимізація
5👍4🔥2
Народ, привіт! 👋

Хочу поділитися телеграм-каналом одного українського ютубера, який створює крутий контент про геймдев українською мовою 🇺🇦

Нещодавно натрапив на його відео, подивився кілька роликів і справді вражений. Він розповідає про розробку ігор, ділиться фішками, власним досвідом, розбирає цікаві теми і все це зрозуміло, без води і при цьому з душею.

У своєму телеграм-каналі він публікує:
- новини про вихід нових відео,
- власні думки та поради з розробки,
- корисні посилання та ресурси,
- відповідає на коментарі й просто тримає зв'язок із підписниками.

Дуже круто, що з’являється все більше якісного україномовного контенту про геймдев, тож раджу підтримати! 👇

PNG / Project new generation
6👍2
🛑 Unity знову вирішив "покращити", але отримав по шапці від спільноти [Джерело]

Нещодавно в Unity Hub зникла можливість створювати офлайн-проєкти. Усі нові проєкти автоматично під’єднувались до Unity Cloud, хочеш ти того чи ні ☁️

🤦 Це викликало хвилю критики: користувачі звинуватили Unity у нав’язуванні хмарних сервісів і контролю над даними розробників.

🔁 Добре, що спільнота не мовчала! Після активного фідбеку Unity офіційно заявили:
“Ми почули вас. Користувачі мають мати контроль над своїми даними.”


👉 Функцію створення локального проєкту повернули.

Тепер при створенні нового проєкту з’явилась опція “Create New Local Project”

😬 Але є нюанс — вона захована:
• Спочатку вводиш назву проєкту.
• Потім треба прокрутити випадаючий список до самого низу, щоб побачити потрібний пункт.

Це рішення виглядає як "темний шаблон" UI — неочевидне, заплутане й незручне. Сподіваємось, це лише тимчасово.

Скандал, звісно, не як з Runtime Fee, але осад лишився.

💻 | GAMEDEV UA | #новини #unity
👀103
🚨 УВАГА! УВАГА! ТЕРМІНОВО! 🚨

Надурив один "рекламодавець"

Домовились про покупку реклами. Він надав повний комплект доказів — скріни, логін, голосові повідомлення, а найголовніше відповів із Telegram-аккаунта, вказаного в описі під його відео. Тобто всі ознаки того, що це його канал, були підтверджені, і спілкування проходило цілком нормально.

Також написав 1-2 людям, які до цього купляли рекламу, сказали, що все було ок.

Після того я відправив гроші, але рекламу так і не зробили. На мої повідомлення він вже не відповідає — повний ігнор. Ми спілкувалися приблизно місяць після оплати і більшу частину часу він годував мене "завтраками". Єдине, що писав це просьба типу: "треба скинути гроші монтажерові", хоча я не був зобов’язаний це робити, це була лише його власна просьба.

‼️ Прошу всіх, будь ласка, зайдіть на його канал і киньте скаргу. Це дуже важливо, щоб він не обманював інших і щоб отримав по заслугам. Якщо кожен хто це прочитав виділить хвилинку часу для скарги - цього буде достатьно.

🔎 Якщо потрібні докази, скріни, переписки, все є, можу скинути в особисті. Напишіть мені, якщо це вам справді потрібно.

Посилання на канал 👉 Скарги сюди 👈

🙏 Дякую кожному, хто не пройде повз.
8🤯2
📊 Чому планування — основа успішної гри?

Одну з найпоширеніших помилок серед розробників (особливо інді) можна описати просто: сіли й одразу почали щось кодити. Без чіткого плану, без структури, без розуміння, що буде завтра.

Але через тиждень-два починається класика:
🔸 виникає купа незв’язаної логіки
🔸 нові фічі ламають старі
🔸 частину треба викидати й переробляти
🔸 мотивація падає, бо все «йде не туди»
🔸 а іноді просто здаєшся

І саме тут вирішальну роль відіграє планування. Це не про те, щоб зробити ідеальну GDD на 50 сторінок. Це хоча б про:
чітке розуміння цілей
розподіл функціоналу на етапи
базову архітектуру коду
список фіч — основних і другорядних
і приблизні дедлайни, навіть умовні

Якщо тільки починаєш — зупинись на годину-дві, сядь і пропиши собі все по пунктах. Це зекономить десятки годин у майбутньому.

🎥 Відео українськомовного ютубера на цю тему, де детально розглядається важливість планування, типові помилки й поради:

🔗 [Відеоролик] 👈

💻 | GAMEDEV UA | #запитання #планування
5🔥3
🔥 5 лайфхаків для маркетингу інді-ігор від Кріса Зуковського (Steam експерт)

Кріс Зуковський — спеціаліст із просування в Steam — нещодавно поділився у прямому ефірі від Unity найефективнішими рекомендаціями для інді-розробників.

📺 Весь стрім з Кріcом Зуковським можна подивитися тут 👈

Ось головне з його інтерв’ю:

1️⃣ Вибір жанру визначає маркетинг
Жахи та стратегічні симулятори будівництва зараз на піку популярності. Це маркетингове рішення потрібно приймати одразу, а не після створення гри.

2️⃣ Оптимізація сторінки Steam
У вас є кілька секунд, щоб зачепити гравця. Найкраще — найняти ілюстратора для професійних скриншотів і мініатюр, а не користуватися стандартними скриншотами або простими написами.

3️⃣ Типові помилки інді-розробників
• Не ігноруйте анонси — створення сторінки в Steam вже є анонсом гри.
• Використовуйте всі інструменти Steam, зокрема надсилайте листи тим, хто додав гру у вішлист.
• Правильно ставте теги, щоб збільшити видимість.

4️⃣ Готуйтесь до Steam Next Fest заздалегідь
Демоверсія має бути готова і без багів до початку фестивалю, щоб створити імпульс і зібрати велику аудиторію.

5️⃣ Витрачайте бюджет розумно
Основна інвестиція — ілюстратор для якісного візуалу. Решта маркетингу — це стратегія та робота з безкоштовними інструментами.

💻 | GAMEDEV UA | #запитання #маркетинг #steam
🔥71
🧠 C# / Unity: Що таке IDisposable і як він зробить твій код кращим?

🛠 Патерн IDisposable — це корисний інструмент для розробки чистого, контрольованого коду в C#. Особливо він стає у пригоді в ігровій розробці на Unity, де важливо правильно керувати ресурсами, підписками на події та життєвим циклом об’єктів.

🔍 Що таке IDisposable?
IDisposable — це інтерфейс, який дозволяє класу реалізувати метод Dispose(). Його основна мета звільняти ресурси вручну, коли вони більше не потрібні.

Приклади ресурсів, які потрібно чистити:
• підписки на події (+=)
• файлові дескриптори
• сокети
• обробники таймерів
• кешовані або тимчасові об'єкти

🔄 Навіщо це в Unity?
У Unity багато об’єктів (особливо ті, що не є частиною сцени або використовуються як менеджери) не очищаються автоматично, що може призвести до:
• витоків пам’яті,
• завислих подій (які продовжують викликатися),
• труднощів при перезапуску сцен або об'єктів.

Патерн IDisposable дозволяє контролювати життєвий цикл об’єктів та чітко вказати, коли об’єкт повинен "прибрати за собою".

📦 Як виглядає реалізація?
public class Example : IDisposable
{
public Example()
{
// Наприклад, підписка на подію
GameEvents.OnSomethingHappened += OnEvent;
}

public void Dispose()
{
// Обов’язково: відписка
GameEvents.OnSomethingHappened -= OnEvent;
}

private void OnEvent()
{
Debug.Log("Подія оброблена");
}
}

Unity-приклад: використання в MonoBehaviour
public class ScoreHandler : MonoBehaviour
{
private ScoreListener listener;

void Start()
{
listener = new ScoreListener(); // створюємо об’єкт, який підписується на події
}

void OnDestroy()
{
listener.Dispose(); // відписуємося — уникнення витоків
}
}

Це дуже зручно для тимчасової логіки або одноразових сервісів (UI-повідомлення, кеш об'єктів, мережеві запити тощо).

🧩 Коли використовувати в ігрових проєктах
Патерн особливо корисний у класах, які підписуються на глобальні події — це дозволяє вчасно відписуватись і уникати небажаних викликів. Також його варто застосовувати в менеджерах, що працюють із потоками, файлами або іншими зовнішніми ресурсами. Він добре підходить для сервісів зі сценарієм "створення — використання — знищення", як-от кеші або UI-компоненти. Крім того, IDisposable допомагає реалізувати чистий перезапуск сцени: спершу Dispose, потім Unload і лише після цього Reload.

▶️ [Детальніше тут] 👈

💻 | GAMEDEV UA | #уроки #IDosposable #очищення #кеш
🔥7👍21
🚧 Unity 3D – Як зупинити об'єкти від проникання крізь стіни

🎮 Якщо в твоїй грі об'єкти "провалюються" або "врізаються" в стіни, це відео саме те, що треба. Тут розповідається, як уникнути кліпінгу (clipping), коли моделі перетинаються одна з одною в неналежний спосіб.

Це особливо корисно для:
• гравців, які підходять близько до стін;
• предметів, що рухаються фізикою;
• колізій між NPC та оточенням.

▶️ [Unity 3D - How to stop objects from clipping into walls] 👈

💻 | GAMEDEV UA | #туторіал #clipping
10👍1
🎯 Хочеш додати Квестову Систему до свого RPG в Unity?

Серія відео, де покроково показано, як реалізувати повноцінну систему квестів.

🔧 Що навчишся:
1️⃣ UI — створення інтерфейсу для журналу квестів
2️⃣ Quest Log — зберігання і відображення активних/виконаних квестів
3️⃣ Scriptable Objects — зберігання опису, цілей та нагород
4️⃣ Прогрес квестів — прийняття, відстеження та завершення
5️⃣ Інтеграція з діалогами — видача квестів через NPC
6️⃣ Меню — перемикання між вкладками: Статистика, Навички, Квести

📺 [Переглянути серію] 👈

🧩 Ця система об’єднує діалоги, інвентар, навички та UI в єдину RPG-структуру.

💻 | GAMEDEV UA | #туторіал #quest #questsystem #квестсистема
👍5🔥31🥰1
⚖️ Як робити баланс у грі: просто про складне

Баланс це коли в грі:
• немає «оп» тактик;
• гравець не злітає від складності;
• прокачка не знищує інтерес;
• кожне рішення має вагу.

Але зробити його — пекельно складно. Навіть в простих іграх: скільки потрібно монет на апгрейд? Скільки ХП має бос? Коли гравцю стане нудно?

📊 1. Баланс це система, а не відчуття
Помилка багатьох початківців: «все відчувається норм, бо я грав 100 разів». Але це суб’єктивно.

👉 Реальний баланс — це числа + закономірності.
Все, що ти даєш гравцю (золото, дмг, бусти) — має рахуватися.

🔧 Приклад:
Якщо твій ворог має 100 HP, а зброя наносить 12 dps, а апгрейд збільшує на 20%, все це має вкладуватись у контрольований прогрес, а не «якось по фану».

📈 2. Створюй баланс як економіку
У більшості ігор є своя «економіка». Навіть у платформері з монетками.

Питання, які варто задати:
• Скільки гравець заробляє за сесію?
• Скільки потрібно для апгрейду/розблокування?
• Чи не можна одразу все купити?
• Чи є відчуття прогресу?

✍️ Наприклад:
Якщо апгрейд коштує 500, а гравець отримує по 50 за рівень — він має пройти 10 рівнів. Норм? Чи задовго?


🔁 3. Створи криву прогресу

Неважливо, це HP ворогів чи ціна прокачки — все має змінюватися поступово.

🔺 Зазвичай використовують:
• Лінійне зростання: x = x + 10
• Експоненційне: x = x * 1.2
• Кастомну криву

🧠 Порада:
Почни з таблиці Excel або Google Sheets, пропиши 30 рівнів HP, цін, доходу.
Подивися на тренди. Якщо на 15 рівні потрібно 5 годин гринду — перепиши.

⚔️ 4. Уникай «оптимальної» стратегії
Баланс має змушувати думати, обирати, адаптуватись, а не просто качати один скілл або купити одну найкращу пушку.

🤔 Якщо в тебе 5 видів зброї, але всі користуються тільки однією — решта марна.
Значить, треба:
• Зменшити ефективність «оп» варіанту;
• Підсилити інші, дати їм інші плюси;
• Або зробити, щоб ситуації вимагали різного (вороги з бронею, стелс, AoE).

🧪 5. Баланс не існує без тестів
Неможливо збалансувати гру виключно в голові. Тільки коли в неї починають грати інші люди, ти бачиш справжню картину: де гравці ламають механіку, де стає надто важко або навпаки занадто просто, і яку стратегію обирає більшість.

Відео один 👈

👉 Відео два

🎬 Підсумок:
🔹 Баланс — це не інтуїція, а конкретна система чисел
🔹 Працюй з екселем, крива прогресу
🔹 Тести важливіші, ніж твоє «відчуття»

💻 | GAMEDEV UA | #запитання #баланс
6👍4🔥1
Ось реально кайфове відео!

Наткнувся на доволі цікаве відео, як чувачок зробив свій "Unity". Пост не мав би бути рекламним, але вже, якщо почав то скажу 😎

Прекрасна та цікава подача, цікаві теми, а головне - все українською. Якісний розвиток українського геймдеву, це круто 👍

📺 [Переглянути відео] 👈

В основному все сказав, доволі якісно та цікаво. Тому раджу подивитися та підтримати лайком і підпискою.

📲 А ще, якщо вам цікаво, ось його Telegram-канал, де він постить апдейти, технічні штуки і просто ділиться прогресом:

Telegram | Чєпуха
7
Привіт, народ 👋

Перше опитування і досить важливе. В загальному чи подобається вам контент? Можливо ви хочете більше навчально-освітніх постів. Чи навпаки, трішки менше і більше туторіалів і паків/асетів. Або чогось іншого. Чекаю вашої відповіді 👇
Anonymous Poll
49%
Все влаштовує 👌
27%
Більше туторіалів та асетів 🗂
20%
Більше новин та цікавих фактів 📰
4%
Відповім у коментарях 😉
21
🔧 Нарешті дієвий фреймворк DI для Unity!

Впровадження залежностей у Unity не повинно бути важким, повільним або заплутаним.

👉 Reflex — це легкий, надшвидкий DI-фреймворк, створений спеціально під Unity. Він підтримує:
🔁 Ієрархічні контейнери та області видимості
🚀 Сумісність з AOT (включно з IL2CPP і WebGL)
⚡️ Швидшу роботу та менше GC у порівнянні з Zenject та VContainer

▶️ [Відеоролик] 📼

У цьому відео показано, як швидко налаштувати Reflex, працювати з сінглтонами, обмеженими областями, транзієнтними залежностями і як акуратно інжектити залежності через поля, властивості, методи і навіть під час виконання.

💻 | GAMEDEV UA | #інструменти #unity #DependencyInjection #Reflex #Zenject #VContainer
4🔥2👍1
Ще раз привіт 👋

Отже, якщо підсумувати результати опитування, та написані вами коментарі, хочу по-перше подякувати за ваші відповіді так як вони допомагають нам йти далі та розвивати канал! Дякую 😎

По-друге, для того щоб ми могли активніше набирати підписників, щоб контент ставав цікавішим як і для майбутніх підписників, так і для вас, буде впроваджено такі зміни:

• Тепер, замість недільних постів буде один пост-підсумок (Я би це назвав "Тижневий підсумок"). Що це таке?

Це пост, у якому будуть підсумовуватися всі пости. Наприклад скільки було навчальних постів (короткий дуже перелік та посилання на кожен пост), аналогічно і з іншими тематиками як #туторіал і так далі.

Це потрібно, щоб ви замість того, щоб гортати всі пости могли просто клацнути та подивитися що саме вам було би цікаво. Повідомлення будуть закріплюватися для більшої зручності 📌

(Це не причина всім глушити канал. Перегляди постів надалі є важливими, це просто для зручності. Тому ми і надалі будемо раді вашим лайкам та коментарям під постами :)

• По-третє. Контент теж трішки зміниться. Але не сильно 😉

Я так зрозумів, що такий контент, який зараз є - всім до вподоби. Але теж є але. Деякі користувачі сказали досить хорошу річ, що "той кому треба щось зробити, той сам знайде", це стосується туторіалів ну і ще деяких тематик. Тому надалі буду БІЛЬШЕ шукати "цікавішого" контенту. Що я маю на увазі:

Для прикладу можу згадати асети-інструменти. Так як їх особливо виділили користувачі. Також до цієї категорії можна віднести #новини.

❗️УВАГА! КОНТЕНТ І ДАЛІ БУДЕ ТАКИЙ ЖЕ ЯК І ЗАРАЗ, ТУТОРІАЛИ, НАВЧАЛЬНІ МАТЕРІАЛИ І Т.Д ЗАЛИШАЮТЬСЯ. Просто буду трішки більше акцентувати на вище перечислених речах.


• По-четверте. Враховуючи всі зміни було додано новий тег #інструменти, думаю, що самі розумієте для чого він. Також, хотілось би внести нову рубрику. Прикольними фічами/результатами, якими ви готові поділитися. Інколи я би міг їх скидувати у канал 😎

Отже також маємо на увазі!

📌 Якщо вас цікавить певний контент, можете скористатися першим закріпленим повідомленням. Там все розписано. А саме, що на каналі #теги використовуються не просто так 😉

💵 Підтримати канал, що досить важливо для просування (всі гроші підуть на рекламу) можете ось тут:
send.monobank.ua/jar/2reZEm3K3T 👈

📞 Зв'язок з автором: @DevAndrew

Всім дякую за увагу. Чекайте наступних постів 👀
👍73👨‍💻1
🔧 Ragdoll при смерті персонажа в Unity — ефектно, просто, керовано

У відео показано, як грамотно перейти від керованого AI персонажа до ragdoll-фізики в момент смерті. Без глюків, без ломки скелету.

👉 Що всередині:
🧠 AI працює через NavMeshAgent
💀 При “смерті” — agent.enabled = false, Animator вимикається
🦴 Активуються Rigidbody та Collider-и на кістках (вони були вимкнені заздалегідь)
🔁 Усе керується методом EnableRagdoll(bool enable) — універсально і зрозуміло
💡 Фокус не тільки на ефекті, а й на структурі скрипта — можна легко переюзати

▶️ Відео 👈

🧩 Ідеально підходить для ігор з ботами, ворогами чи анімованими NPC

💻 | GAMEDEV UA | #туторіал #Ragdoll #AI #NavMesh #Animator #Physics
7👍4
🧠 Unity: Система подій OnTriggerEnter / OnCollisionEnter — фізика та взаємодія

У Unity фізика працює через події, які викликаються автоматично при взаємодії об’єктів із колайдерами.

🔹 Ключові поняття
• Collider — компонент, що визначає форму для зіткнень
• Rigidbody — додає об’єкту фізику: масу, гравітацію, інерцію
• Trigger — колайдер, який не блокує рух, а лише фіксує контакт
• Collision — фізичне зіткнення (при вимкненому isTrigger)

🔸 Основні методи
🟦 OnTriggerEnter(Collider other) – вхід у тригер
🟦 OnTriggerStay(Collider other) – об’єкт у тригері
🟦 OnTriggerExit(Collider other) – вихід з тригера

🟥 OnCollisionEnter(Collision col) – початок зіткнення
🟥 OnCollisionStay(Collision col) – зіткнення триває
🟥 OnCollisionExit(Collision col) – зіткнення завершене

У чому різниця між Trigger та Collision?

🚩 Trigger — це коли об’єкти проходять один крізь одного, але подія все одно викликається. Таку взаємодію часто використовують для зон активації, підбору бонусів, телепортів тощо.

📌 Що потрібно:
• Один з об’єктів має Collider з увімкненим isTrigger = true
• Інший — бажано має Rigidbody (але не обов’язково для простих випадків)

💥 Collision — це реальне фізичне зіткнення, коли об’єкти зупиняються або відскакують один від одного. Його використовують для взаємодії тіл у фізичному світі гри: ворог стикається з гравцем, м’яч б’ється об стіну тощо.

📌 Що потрібно:
• Обидва об’єкти мають Collider з isTrigger = false
• Хоча б один має Rigidbody — без нього подія не спрацює

💡 Приклад. Підбір монети (Trigger)
void OnTriggerEnter(Collider other)
{
if (other.CompareTag("Player"))
{
Debug.Log("Гравець підібрав монетку!");
Destroy(gameObject);
}
}


💡 Приклад.
Зіткнення з ворогом (Collision)
void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Player"))
{
Debug.Log("Ворог атакує гравця!");
}
}


📌 Це одна з базових тем Unity, яку варто розуміти всім, хто працює з фізикою 🎯

💻 | GAMEDEV UA | #уроки #UnityPhysics #Collider #Trigger #Collision #MonoBehaviour #фізика
👍82👏1