Создаём подводную сцену в Unity за 3 часа
гифка Грут
Всем привет!
ШАГ 1
Вдохновляемся в Pinterest по тегу Underwater
ШАГ 2
делаем простую 3д модель без деталей в 3д максе полигонами.
прикидываем где ставить светильники
ШАГ 3
Вставляем источник света (HXVolumetric - плагин для красивых лучей)
Point Light
ШАГ 4
Делаем лучи: расставляем сферы и анимируем их с помощью кода
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RandomMover : MonoBehaviour
{
[SerializeField] float SpeedMult;
[SerializeField] float DistMult;
[SerializeField] Vector2 TimeScaler;
[SerializeField] GameObject[] Objs;
Vector3[] Startpos;
Vector3[] Targetpos;
float[] timer;
private void Awake()
{
Startpos = new Vector3[Objs.Length];
Targetpos = new Vector3[Objs.Length];
timer = new float[Objs.Length];
for (int i = 0; i < Objs.Length; i++)
{
Startpos[i] = Objs[i].transform.position;
timer[i] = Random.Range(TimeScaler[0], TimeScaler[1]);
Targetpos[i] = Startpos[i]+ DistMult* UnityEngine.Random.onUnitSphere;
}
}
void Update()
{
for (int i = 0; i < Objs.Length; i++)
{
timer[i] -= Time.deltaTime;
if (timer[i] < 0)
{
timer[i] = Random.Range(TimeScaler[0], TimeScaler[1]);
Targetpos[i] = Startpos[i] + DistMult * UnityEngine.Random.onUnitSphere;
}
else
{
Objs[i].transform.position = Vector3.Lerp(Objs[i].transform.position, Targetpos[i], Time.deltaTime);
}
}
}
}
cферы для того чтобы волюметрик лайт давал красивые полосчки теней
Шаг 5
Добавляем частиц пузырьков
Обычный партикл систем
Шаг 6
делаем шейдер каустики и добавляем на дно и пещеру
Amplify Shader Editor, нода Panner для смещения
Добавляем постэффектов по вкусу и готово.
Ниодной ракушки не пострадало!
Конечно это не финальная версия, но для концепта сгодится.
36 комментариев