ScrepY1337

ScrepY1337

https://store.steampowered.com/app/3551540/Reaper_Hunt_Survivor/
На Пикабу
8346 рейтинг 70 подписчиков 1 подписка 27 постов 10 в горячем
23

Как создать атмосферный туман в Unity: пошаговое руководство

Ссылка на скачивание всех файлов: https://drive.google.com/file/d/1JMFbpmPtTw0qn_EQdWtqJkBVeQDLXdao/view

Ссылка на мою игру (Steam)

В этой статье мы рассмотрим, как создать атмосферный туман в Unity. Материал состоит из двух частей:

1. Создание тумана.

2. Реализация рассеивания тумана вокруг определённого объекта. (Игрока)

Часть 1: Создание тумана

Что понадобится?

Для создания тумана используется всего одна текстура, которую можно скачать по ссылке ниже:

<a href="https://pikabu.ru/story/kak_sozdat_atmosfernyiy_tuman_v_unity_poshagovoe_rukovodstvo_13017188?u=https%3A%2F%2Fdrive.google.com%2Ffile%2Fd%2F1i5WmcGHpOcsSfiA58nt6KfIXV8lX8BdQ%2Fview&t=%D0%A1%D0%BA%D0%B0%D1%87%D0%B0%D1%82%D1%8C&h=0d2cb5a28c6a28e0b683dfa4a958be7beaf658ca" title="https://drive.google.com/file/d/1i5WmcGHpOcsSfiA58nt6KfIXV8lX8BdQ/view" target="_blank" rel="nofollow noopener">Скачать</a>

Скачать

Шаги создания

Создайте систему частиц

Добавьте систему частиц в сцену и настройте её параметры. В качестве примера можно взять следующую конфигурацию:

Материал системы частиц с текстурой

Материал системы частиц с текстурой

После настройки вы получите атмосферный туман, который можно использовать в ваших проектах.

Часть 2: Рассеивание тумана вокруг объекта

Чтобы добиться эффекта, когда туман рассеивается вокруг определённого объекта (например, игрока), нам потребуется немного дополнений в виде шейдера и скрипта.

Сначала скачайте шейдер по ссылке ниже, либо создайте и настройте его:

<a href="https://pikabu.ru/story/kak_sozdat_atmosfernyiy_tuman_v_unity_poshagovoe_rukovodstvo_13017188?u=https%3A%2F%2Fdrive.google.com%2Ffile%2Fd%2F1JMFbpmPtTw0qn_EQdWtqJkBVeQDLXdao%2Fview&t=%D0%A1%D1%81%D1%8B%D0%BB%D0%BA%D0%B0&h=e064e9b893c64e2b9e534aeaeae146f2f8aca978" title="https://drive.google.com/file/d/1JMFbpmPtTw0qn_EQdWtqJkBVeQDLXdao/view" target="_blank" rel="nofollow noopener">Ссылка</a>

Ссылка

Если вы используете шейдер отдельно, убедитесь, что у него правильно настроено имя Reference для передачи значений из скрипта.

Создайте новый материал, используя скачанный шейдер.

Ниже приведён простой скрипт на C#, который будет передавать значения в шейдер для контроля рассеивания тумана:

using UnityEngine;

namespace _Code.Scripts.VFX

{

public class ParticleSystem_FogAvoidPlayer : MonoBehaviour

{

public Transform player;

public float minDistance = 2f;

public float maxDistance = 10f;

public float updateInterval = 0.1f;

private ParticleSystemRenderer particleRenderer;

private MaterialPropertyBlock propBlock;

private float nextUpdateTime;

private readonly int playerPosId = Shader.PropertyToID("_PlayerPosition");

private readonly int minDistId = Shader.PropertyToID("_MinDistance");

private readonly int maxDistId = Shader.PropertyToID("_MaxDistance");

public void Init(Transform playerTransform)

{

player = playerTransform;

}

void Start()

{

particleRenderer = GetComponent<ParticleSystemRenderer>();

propBlock = new MaterialPropertyBlock();

UpdateShaderParameters();

}

void Update()

{

if (Time.time >= nextUpdateTime)

{

UpdateShaderParameters();

nextUpdateTime = Time.time + updateInterval;

}

}

void UpdateShaderParameters()

{

if (player == null || particleRenderer == null)

return;

particleRenderer.GetPropertyBlock(propBlock);

propBlock.SetVector(playerPosId, player.position);

propBlock.SetFloat(minDistId, minDistance);

propBlock.SetFloat(maxDistId, maxDistance);

particleRenderer.SetPropertyBlock(propBlock);

}

}

}

Применение скрипта

  1. Добавьте скрипт Прикрепите скрипт ParticleSystem_FogAvoidPlayer к системе частиц.

  2. Настройте ссылку на объект в инспекторе укажите ссылку на объект (например, игрока)

Результат:

Ссылка на мою игру

Показать полностью 9 3
626

После того как я получил отзывы о тумане в моём предыдущем посте, я немного его доработал. Спасибо всем!

Игра (Steam)

1263

После вашего фидбека я исправил скорость и свет портала. Что думаете?

Игра (Steam)

8
Вопрос из ленты «Эксперты»

Как можно улучшить внешний вид панели?

Игра (Steam)

Отличная работа, все прочитано!