Страница 1 из 1

Как плавно преобразовать спрайт квадрата в круг.

СообщениеДобавлено: 08 июл 2018, 12:51
Pro
Есть спрайт с нарисованным квадратом. Мне нужно его плавно преобразовать в круг.
Как это можно сделать?
Думал рендерить в альфа канал новую альфу, рисуя туда круг. Вначале круг будет увеличенный, потом плавно уменьшаться, тем самым "скругляя" углы квадрата.
Но я слышал, что рендер в текстуру только в Pro версии. Как еще можно сделать? Может шейдер есть, который рисует прозрачными пиксели по динамичной маске в виде фигуры?

Re: Как плавно преобразовать спрайт квадрата в круг.

СообщениеДобавлено: 08 июл 2018, 13:00
1max1
Слишком размытый вопрос, можно ведь один спрайт плавно заменить другим, у одного альфу лерпать к нулю, у другого, под первым спрайтом, к единице.

Re: Как плавно преобразовать спрайт квадрата в круг.

СообщениеДобавлено: 08 июл 2018, 13:13
Pro
1max1 писал(а):Слишком размытый вопрос, можно ведь один спрайт плавно заменить другим, у одного альфу лерпать к нулю, у другого, под первым спрайтом, к единице.

Так и будет. Снизу круг, сверху исчезающий квадрат. Но хочется что бы у квадрата еще и углы скруглялись, а не просто уменьшалась альфа.

Re: Как плавно преобразовать спрайт квадрата в круг.

СообщениеДобавлено: 08 июл 2018, 13:29
waruiyume
Можно в шейдере сделать что-то в духе:
half dist = length(half(0.5,0.5), uv);
if(dist<_CutDist)//_CutDist должен быть в диапазоне от 1 до 1.4
discard;
За синтаксис не ручаюсь.

Re: Как плавно преобразовать спрайт квадрата в круг.

СообщениеДобавлено: 08 июл 2018, 13:49
1max1
Но хочется что бы у квадрата еще и углы скруглялись, а не просто уменьшалась альфа.

Первый спрайт квадрат, второй - спрайт маска круга достаточно большого чтобы полностью закрыть квадрат.
В спрайте с квадратом ставишь Visible Inside Mask, потом перекрываешь маской круга квадрат, он должен быть виден, и когда надо будет сделать круг, нужно просто плавно уменьшать скейл маски до нужного размера, таким макаром углы будут медленно скруглятся.

Re: Как плавно преобразовать спрайт квадрата в круг.

СообщениеДобавлено: 08 июл 2018, 14:04
Pro
waruiyume, идею понял. Придется шейдеры учить.
Я надеялся, что в юнити есть готовое решение(или шейдер), который умеет трансформировать изображение, указав начальную и конечную форму.

Re: Как плавно преобразовать спрайт квадрата в круг.

СообщениеДобавлено: 08 июл 2018, 14:07
Pro
1max1 писал(а):Первый спрайт квадрат, второй - спрайт маска круга достаточно большого чтобы полностью закрыть квадрат.
В спрайте с квадратом ставишь Visible Inside Mask, потом перекрываешь маской круга квадрат, он должен быть виден, и когда надо будет сделать круг, нужно просто плавно уменьшать скейл маски до нужного размера, таким макаром углы будут медленно скруглятся.

Спасибо, попробую так.