{"id":3824,"url":"\/distributions\/3824\/click?bit=1&hash=a0d33ab5520cacbcd921c07a49fc8ac5b78623b57936b992ce15c804b99210d4","title":"\u041a\u0430\u043a\u0443\u044e \u0440\u0435\u043a\u043b\u0430\u043c\u0443 \u043c\u043e\u0436\u043d\u043e \u0434\u0430\u0442\u044c \u043d\u0430 DTF \u0438 \u043a\u0442\u043e \u0435\u0451 \u0443\u0432\u0438\u0434\u0438\u0442","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"75ec9ef4-cad0-549d-bbed-1482dc44e8ee","isPaidAndBannersEnabled":false}
Инди
Yegor Zhumikov

Skak. Девлог 2. Глаза

В этот раз я не слишком много успел, потому что больше возился над дипломом, который мне бы уже сдавать через неделю. Но что-то да успел: )

Все время с прошлого девблога я потратил на глаза фигур. Я себя убедил, что раз фигуры это очень важные элемент игры про, ну… шахматные фигуры, то на них и их Look&Feel резонно тратить много времени. А так как у фигур по макетам должны быть глаза, то глаза должны быть самыми крутыми.

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

Глаза 0.1

Потом добавил зрачки, но из-за перемешавшихся параметров высоты, относительных позиций и просто математики все произошло не с первого раза (гифки):

Но потом все завелось:

Но на этом мы не остановились, мы решили добавить разные эмоции для фигур, поэтому нужно было добавить веки. Ну и просто для реализма нужно было добавить заднее веко, которое считалось по углу разворота. Сначала я думал сделать очень крутые супер-пупер закрывающиеся веки, которые бы учитывали угол разворота и были бы под углом и начал считать очень много формул и делать кучу зарисовок:

Я не слишком хорош в тригонометрии и математике и уже несколько лет вообще не прикасался к этому, поэтому вспоминалось все это туговато. Но в какой-то момент я понял, что в глазе 7х7 пикселей с отводкой в один пиксель (то есть 5х5) это все вообще не нужно и поддался на идею Юры просто сделать горизонтальные веки. Получилось вот так:

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

Внутренности

Внутри все устроено довольно просто. Глаз состоит из трех спрайтов, и если мысленно представить в 3д и растянуть по слоям (что я для удобства сделал за вас), то выглядеть будет вот так:

У самих век специальный шейдер, которому передается угол поворота и высоты обоих век, на основе чего считается прозрачность для каждого пикселя:

Основная функция прозрачности получилась слегка замудрёной, но в целом вроде бы понятной:

void EyeLidAlphaCheckNode_float(float angle, float radius, float c, float closeLevelUp, float closeLevelDown, float2 pos, out float alpha) { const float s = sign(angle); const float signed_c = c * s; const float threshold = radius * cos(angle); alpha = ((1 - pos.x) * s > threshold + signed_c) || pos.y > closeLevelUp || pos.y < closeLevelDown; }

Как-то так вот

Подозревают
0
10 комментариев
Написать комментарий...
Grub4dos

Нормально, только фигурки неправильно стоят, вот поправил.

Ответить
Развернуть ветку
Ярослав Голубев

Поправил поправку

Ответить
Развернуть ветку
Cornelius

Всё равно криповато ;)

Ответить
Развернуть ветку
Yegor Zhumikov
Автор

Ну вот :(

Ну прикрутим к этому полноценные эмоции, которые будут реагировать на всякое разное, думаю станет лучше

Ответить
Развернуть ветку
Koribskiy

А мне нравится х)

Ответить
Развернуть ветку
Андрей Торчинский

Пока что кажется что без глаз лучше было 

Ответить
Развернуть ветку
realavt

На превью с их прищуром выглядело как то ли руки, то ли сиськи...

Ответить
Развернуть ветку
Roman Rzaev

1) не знаю что там с серьезностью проекта (шахматы же да? ) но кому-нибудь косые глаза (а-ля как на первой гифке про высоту и т.п.) - зашли бы.
2) если ВСЕ фигуры будут следить за одним курсором одновременно - идея так себе.
3) исходя из п.2 - определить фигурам условие близости курсора - включать "слежение", если не близок - напридумывать анимации как они моргают, смотрят по сторонам, закрывают глаза (мож даже засыпают). 

Ответить
Развернуть ветку
Yegor Zhumikov
Автор

Все фигуры не будут следить за курсором. Это не просто шахматы. Можете посмотреть на прототип вот тут http://yogurtthehorse.itch.io/skak

думаю и моргать будут :)

Ответить
Развернуть ветку
Roman Rzaev

аналог slither.io и прочее, принял ).

Тогда все что я писал можно в мусорку. Но моргание оставить. А то высохнут яблоки то(глазные).

Ответить
Развернуть ветку
Читать все 10 комментариев
null