Сліди від куль

Тема досить цікава, спробуємо в ній розібратися. Найчастіше можна зустріти приклади реалізації слідів від куль на стінах, коли використовується спрайт або меш з текстурою, який накладається на об'єкт, тобто на стіну, наприклад. Зробити це просто і начебто, все працює як треба. Але тут є пара проблем. По-перше, якщо допустимо спрайт накласти на край стіни, то вийде, що частина спрайту просто висить у повітрі, не дуже-то красиво виходить. По-друге, спрайт або меш, чи то пак плоский об'єкт, не вийде накласти на рельєф, або наприклад, на модель персонажа, типу плями крові тощо. І тому, ми будемо використовувати проектор, щоб вирішити ці проблеми, головне, правильно його налаштувати.


На початку імпортуємо стандартні Ассет Effects. тому що там є потрібні нам шейдери. Потім, треба зробити пару нових шарів, для плоскої поверхні і для ворожого персонажа допустимо. І відповідно призначаємо об'єктів ці шари. Це потрібно щоб конкретні проектори працювали з конкретними шарами, не перекриваючи інші:

Сліди від куль


Створимо префаб проектора для плоскої поверхні, для стін наприклад. Додаємо на сцену новий порожній об'єкт і назвемо його ProjectorWall. чіпляємо на нього компонент Projector з настройками як на скріншоті:

Сліди від куль


Як видно, тут ми виключаємо всі шари, крім шару Wall в списку Ignore Layers. Параметр Orthographic Size для настройки розміру, в режимі Orthographic. це режим найкраще підходить під наші завдання.

Тепер створюємо новий матеріал під ім'ям Wall і вказуємо його у відповідному полі проектора. У матеріалі вибираємо шейдер Projector> Multiply:

Сліди від куль


Тепер треба додати в шейдер текстури для Cookie і FallOff. Так ось Cookie це основна текстура, а FallOff обрізає видимість основний текстури, чорний колір обрізає видимість. Наприклад, якщо текстура накладена на край куба, то буде зафарбована поверхню куба, яка стикується з цим караємо. Тому текстура FallOff для площині малюємо ось так:


Буде видимий тільки центр. Налаштування текстури виглядають наступним чином:

Сліди від куль


Налаштування текстури дірок від куль для Cookie такі:

Сліди від куль


Важливий момент! Слід від кулі або пляма крові, повинно бути на білому тлі. непрозорими. Формат може бути PNG або JPG, без різниці.

Тепер зробимо дублікат префаб проектора, назвемо його ProjectorEnemy настройки майже такі ж, але в списку Ignore Layers вже виключаємо всі крім шару Enemy.

Сліди від куль


А так же вкажемо новий матеріал. Дублікат попереднього, але з іншими текстурами, настройки самих текстур такі ж, вид FallOff вже буде таким:


Тут вже більше білої області і тільки краю чорні. Тому як для рельєфу область промальовування потрібна більше, тому що є глибина.

На обидва префаб, вішаємо скрипт BulletProjector:


Скрипт вкорочує робочу область проектора, допуск ми вказуємо в змінної distanceTolerance. Для площині цілком вистачить значення 0.05. а для рельєфу 0.1 або більше. Експериментуйте з префаб проекторів і знайдіть потрібне вам значення.

Тепер стрілянина.
Додайте на сцену UI об'єкт типу Image розміщуємо його по центру екрана вказує спрайт прицілу і вішаємо на об'єкт скрипт FireSystem. який буде створювати проектори:


Нічого особливого тут немає. Вибір який створювати об'єкт в залежності від шару мети, плюс поворот префаб рандомно по Z. Варто відзначити параметр maxProjectors. тобто скільки всього проектором можна створити, економія ресурсів системи. Коли максимальне число досягнуто, то нові об'єкти будуть замінювати перші, тобто якщо їх всього 50 то після появи 51-го, зламаний об'єкт під номером 1.

Завантажити демо проект:

Ви не можете завантажувати файли з нашого сервера

Схожі статті