Сгорание объекта (шейдер)

В URP есть простой способ дать объекту сгореть, и шейдеров много. А для стандартного (built-in) я не нашёл. Поэтому сделал свой.

Может быть, кому-то пригодится.

Шейдер исчезновения скачать тут.

Из шейдера надо сделать материал, материал поместить на объект и настроить.

Настраивается просто, в текстуру «Noise» нужно закинуть любою понравившуюся текстуру шума\разъедания (скачать с инета). Я использую такую:

Параметр border задаёт толщину «горения», например, 0,04;
Параметр border_color задаёт цвет»горения», например, красный;
Параметр visible задаёт состояние «горения» от 0 до 1;

Скриптом «горит», например, так:

using System.Collections;
using UnityEngine;

public class Desappear : MonoBehaviour
{
    private Material[] materials;
    private bool isDesappeared = false;
    
    void Start()
    {
        materials = GetComponentInChildren<MeshRenderer>().materials;
    }

    private void OnMouseDown()
    {
        if (!isDesappeared)
        {
            isDesappeared = true;
            StartCoroutine(Desappearance());
        }
    }

    private IEnumerator Desappearance()
    {
        float value = 1;

        while (value > 0)
        {
            value -= Time.deltaTime;
            foreach (Material material in materials)
            {
                material.SetFloat("_visible", value);
            }
            yield return null;
        }
    }
}

Скрипт надо поместить на объект.

Добавить комментарий