Круговая индикация (fixed)... GMS2
В прошлой теме мне справедливо заметили про рукожопость про низкую производительность решения, с чем я согласен. Гораздо более правильно отрисовывать индикатор в один примитив, чем в 100500 линий. @Nefrace , спасибо тебе за поджопник в нужном направлении подсказочку. Был ешё вариант с постепенной отрисовкой спрайта, но, конкретно для этой задачи, данный способ считаю неоптимальным, но, в принципе, более универсальным.
Погнали!

Итак, в чем прикол? Круг отрисовывается в N трианглов целиком, а не из последовательной отрисовки каждой отдельной линии, из которой круг состоит. Не думаю, что можно подвесить приложуху тем круговым индикатором, что был в первый раз, уж больно он прост, но, если напихать вдесятером - то и саша порвётся сильно захотеть - можно что угодно повесить.
Листинг:
почему картинкой? Ну потому что - прошаренные чуваки и так всё напишут, а те, кому это может быть полезным - при переписывании подправят под себя (или хотя бы проникнуться тем, что происходит в скрипте)... хотя кого я обманываю. Если кому-то нужен формат для копипасты: https://pastebin.com/vfnLzgqU
ну и для развлекалова, что можно намутить из такой штуки:

такие загогулины делаются путём добавления в lenghdir_x/lenghdir_y во второй аргумент (угол) функции типа sin/cos/tan и всё такое, можете поэксперементировать сами.

з.ы. вкратце для тех, кто не шарит и хочет разобраться: в скрипт передается значение индикатора (например скорость, под переменную current_value), дальше значение преобразуется в угол дуги через отношение макс.угла к макс.возможному значению счётчика. Потом проверка на активацию (activation_button - это кнопка, которая активирует увеличение значения скрипта). В каскаде условий ещё свистоперделки напиханы, типа замедления увеличения значения обратнопропорционально текущему(типа чем выше скорость, тем медленнее она прирастает). При достижении капа - счетчик сбрасывает рандомное значение, ну типа имитирует реал... впрочем похуй, выглядит збс! :D Дальше в цикле прокатывается i вплоть до текущего значения счетчика в градусах, где шаг - отношение к радиусу. Почему к радиусу? Ну потому что физический смысл получится - кол-во сторон многоугольника... Из свистелко-перделок - определение цвета в зависимости от значения. Если это не надо - можно вынести arc_color выше цикла и завязать на текущее значение
arc_color = make_color_hsv(70 - clamp(70/max_value*current_value,10,70),255,255)
тогда меняться будет вся полоса, а не радугой. Ну и расширение первого значения в hsv - расширит диапазон цветов, дуги. Последняя точка рисуется вне цикла, чтобы прирост дуги был не скачками кратно шагу i, а плавненько.
з.ы. в листинге вариант с половинным градиентом, если хочется, что бы полоска стухала и наружу и внутрь - нужно делать ещё один проход draw_primitive_begin/draw_primitive_end, с циклом, в точках которого указывать альфу наоборот (про толщину тока не забываем). Почему так?
потому что триангл имеет три вершины и, если добавить ещё одну точку в цикл - получатся прозрачные полосы между ними. В принципе, может кому-то и сойдёт. Но для ламповой, ровнозатухающей полосочке - придётся рисовать в два прохода. Впрочем - можно накрутить костыль в виде спрайта с фэйдом так, чтоб он притушил внутренний край полоски... Но не думаю, что это адекватно :D
з.з.ы. а ещё можно в поверхости бублики вырезать

Лига Разработчиков Видеоигр
8.5K постов23.1K подписчиков
Правила сообщества
ОБЩИЕ ПРАВИЛА:
- Уважайте чужой труд и используйте конструктивную критику
- Не занимайтесь саморекламой, пишите качественные и интересные посты
- Никакой политики
СТОИТ ПУБЛИКОВАТЬ:
- Посты о Вашей игре с историей её разработки и описанием полученного опыта
- Обучающие материалы, туториалы
- Интервью с опытными разработчиками
- Анонсы бесплатных мероприятий для разработчиков и истории их посещения;
- Ваши работы, если Вы художник/композитор и хотите поделиться ими на безвозмездной основе
НЕ СТОИТ ПУБЛИКОВАТЬ:
- Посты, содержащие только вопрос или просьбу помочь
- Посты, содержащие только идею игры
- Посты, единственная цель которых - набор команды для разработки игры
- Посты, не относящиеся к тематике сообщества
Подобные посты по решению администрации могут быть перемещены из сообщества в общую ленту.
ЗАПРЕЩЕНО:
- Публиковать бессодержательные посты с рекламой Вашего проекта (см. следующий пункт), а также все прочие посты, содержащие рекламу/рекламные интеграции
- Выдавать чужой труд за свой
Подобные посты будут перемещены из сообщества в общую ленту, а их авторы по решению администрации могут быть внесены в игнор-лист сообщества.
О РАЗМЕЩЕНИИ ССЫЛОК:
Ссылка на сторонний ресурс, связанный с игрой, допускается только при следующих условиях:
- Пост должен быть содержательным и интересным для пользователей, нести пользу для сообщества
- Ссылка должна размещаться непосредственно в начале или конце поста и только один раз
- Cсылка размещается в формате: "Страница игры в Steam: URL"