Форум программистов, компьютерный форум, киберфорум
Unity, Unity3D
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122

Как сделать набирающиеся кольцо вокруг спрайта?

19.06.2021, 19:16. Показов 2645. Ответов 19
Метки c#, unity (Все метки)

Студворк — интернет-сервис помощи студентам
У меня есть спрайт округлой формы, мне нужно чтобы через скрипт я могу вокруг него рисовать кольцо, не сразу а чтобы постепенно оно рисовалось, похоже на значок загрузки, только тут мне нужно контролировать скорость полного рисования кольца.
Как это сделать? (спрайт 2D)
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
19.06.2021, 19:16
Ответы с готовыми решениями:

Вращать спрайт вокруг другого спрайта
Закрепил примерный рисонук. Есть 2 спрайта. (черный - ружье, оранжевое - искра). Ружье постоянно выводиться в руке персонажа, а искра...

Вращение спрайта вокруг оси Z используя Input.GetTouch
Доброго времени суток, Форумчане! Сейчас работаю над задачей - поворот спрайта вокруг своей оси Z с помощью Input.GetTouch. Но...

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

19
 Аватар для Ronin_v
293 / 189 / 111
Регистрация: 22.07.2020
Сообщений: 538
19.06.2021, 23:19
Nebiros,
Можно типа так.
Название: 1.gif
Просмотров: 90

Размер: 150.0 Кб
Выстраиваем структуру из 3 Image, где родитель у меня центральная кнопка и два дочерних тоже Image, где 100% должно быть выше в иерархии над 0%.

На родителя кидаем скрипт
скрипт:
Кликните здесь для просмотра всего текста
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.EventSystems;
 
public class Кнопка : MonoBehaviour, IPointerDownHandler, IPointerUpHandler
{
    public Sprite buttonDown;
    public Sprite buttonUp;
    private Image im;
    private Image childImage;
    private float circle = 0f;
 
    public void OnPointerDown(PointerEventData eventData)
    {
        im.sprite = buttonDown;
        if (childImage.fillAmount < 1)
        {
            circle += 0.05f;
            childImage.fillAmount = circle;
        }
    }
 
    public void OnPointerUp(PointerEventData eventData)
    {
        im.sprite = buttonUp;
    }
 
    void Start()
    {
        im = GetComponent<Image>();
        childImage = this.transform.GetChild(0).GetComponent<Image>();
    }
 
}


На 100% кидаем спрайт максимальной загрузки а на 0% минимальной загрузки.
Затем на 100% изменяем Image Type на Filled и ставим Fill Method Radial 360. Ползунком Fill Amount изменяем степень загрузки. Это я делаю из скрипта.
1
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
20.06.2021, 08:30  [ТС]
Цитата Сообщение от Ronin_v Посмотреть сообщение
Можно типа так.
оно то все хорошо но Image, а у меня спрайты...
тут вот мне посоветовали - https://github.com/Nrjwolf/uni... adial-fill
сейчас сижу смотрю как это применить...
0
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
20.06.2021, 08:47  [ТС]
пока не знаю как его прилепить, у меня спрайт так выглядит
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,075
20.06.2021, 08:50
Nebiros, На картинку внимательно посмотри, там Sprite вообще свернут.

Добавлено через 34 секунды
Дело касаетса материалла
1
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
20.06.2021, 08:55  [ТС]
Цитата Сообщение от zhunshun Посмотреть сообщение
Nebiros, На картинку внимательно посмотри, там Sprite вообще свернут.
Я так понял что этот шейдер нужно прикрепить заместо дефолтного, только он у меня не активен (вот на картинке показано), теоритически его туда нужно прикрепить, только чего у меня даже нет выбора его туда поставить....

Добавлено через 2 минуты
Чет я подзапутался, я с шейдерами и материалами просто еще не сталкивался...
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,075
20.06.2021, 09:02
Лучший ответ Сообщение было отмечено Nebiros как решение

Решение

Создать->Материал перетаскиваете его на спраит и он будет активным, ему зададите не стандарт, а тот которыи в статье написан. Создать->Шеидер и туда код->сохранить и он будет в списке. А эти ползунки потом из кода будете менть как вам надо
1
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
20.06.2021, 09:08  [ТС]
Цитата Сообщение от zhunshun Посмотреть сообщение
Создать->Материал перетаскиваете его на спраит и он будет активным, ему зададите не стандарт, а тот которыи в статье написан. Создать->Шеидер и туда код->сохранить и он будет в списке. А эти ползунки потом из кода будете менть как вам надо
Разобрался, только у меня круг, это я так понял нужно сам спрайт делать кольцо с прозрачностью в середине...
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,075
20.06.2021, 09:12
Да соостетственно
1
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
20.06.2021, 09:14  [ТС]
Цитата Сообщение от zhunshun Посмотреть сообщение
Да соостетственно
Ну это уже мелочи, спасибо.
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,075
20.06.2021, 09:18
Nebiros, Вы сначала сделаите шеидер, там он с текстерами, может он будет делать кольцо. А нет он без текстур
0
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
20.06.2021, 11:41  [ТС]
Теперь не пойму как получить доступ к самим ползункам скриптом...

C#
1
2
public GameObject RingRadial;
RingRadial.GetComponent<SpriteRenderer>().material.shader.angle = 90;
знаю и бредово выглядит, ну и естественно не работает, как правильно что-то не пойму...
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,075
20.06.2021, 12:31
тут как делать

Добавлено через 32 минуты
Nebiros, Заработало?
1
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
20.06.2021, 13:26  [ТС]
Цитата Сообщение от zhunshun Посмотреть сообщение
Nebiros, Заработало?
Что-то не то, прописываю так как в примере показано (я так думаю)
C#
1
2
3
RingRadial.GetComponent<Renderer>().material.SetFloat("Angle", 10f);
RingRadial.GetComponent<Renderer>().material.SetFloat("ArcPoint1", 100f);
RingRadial.GetComponent<Renderer>().material.SetFloat("ArcPoint2", 100f);
Ошибок нет, но и ничего не меняется, что не так...?

Добавлено через 1 минуту
HTML5
1
rend.material.shader = Shader.Find("Specular");
это я пропустил так как у меня же уже установлен в объекте шейдер...
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,075
20.06.2021, 13:45
Nebiros, _Angle нижнее подчеркивание обезательно
Цитата Сообщение от Nebiros Посмотреть сообщение
это я пропустил так как у меня же уже установлен в объекте шейдер...
правильно
1
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
20.06.2021, 13:49  [ТС]
Цитата Сообщение от zhunshun Посмотреть сообщение
Nebiros, _Angle нижнее подчеркивание обезательно
C#
1
2
3
RingRadial.GetComponent<Renderer>().material.SetFloat("_Angle", 10f);
RingRadial.GetComponent<Renderer>().material.SetFloat("_Arc1", 100f);
RingRadial.GetComponent<Renderer>().material.SetFloat("_Arc2", 100f);
О как, теперь работает, спасибо.
0
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
21.06.2021, 11:46  [ТС]
Сразу не заметил проблему а теперь вот всплыла, проблема вот в чём - если один объект на сцене то все нормально, но если несколько (префабов этого типа) то поворот кольца на одном префабе поворачивает кольца на всех остальных, это конечно проблема, а почему так не пойму...

Добавлено через 7 минут
Хотя это вроде в редакторе только такое, при запущенной сцене вроде как все работает отдельно...
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,075
21.06.2021, 11:51
Nebiros, Я думаю, надо каждому отдельныи материал делать. И тогда не будет такого.
1
 Аватар для Nebiros
41 / 40 / 16
Регистрация: 23.03.2010
Сообщений: 3,122
21.06.2021, 12:07  [ТС]
Цитата Сообщение от zhunshun Посмотреть сообщение
Nebiros, Я думаю, надо каждому отдельныи материал делать. И тогда не будет такого.
Да ну... этих объектов может быть на сцене до сотни, и каждому отдельный...
Просто я сразу проверял на одном и проблем не видно было, сейчас вот провел тест на нескольких объектах при запущенной сцене, у всех работает со своей скоростью (нужной) отдельно, так что все нормально, просто при статическом редактировании так может показаться что у всех одинаково...
Лишнюю панику создал
0
 Аватар для zhunshun
767 / 495 / 216
Регистрация: 05.04.2015
Сообщений: 2,075
21.06.2021, 13:04
вот может это как то решит проблему А, понял, все нормально.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
21.06.2021, 13:04
Помогаю со студенческими работами здесь

Кольцо радиуса R совершает малые колебания вокруг точки подвеса O
Кольцо радиуса R совершает малые колебания вокруг точки подвеса O. Даны масса кольца m, радиус кольца R, сопротивляемость среды r....

Как из спрайта сделать ссылку
Надо из кнопки , которую хочу сделать из спрайта , надо сделать ссылку на другую страницу. Пока не доходит как это... спрайти делать буду...

Как сделать фон спрайта прозрачным?
Есть спрайты в формате .BMP , я создаю дочернее окно с помощью ...

Изобразить Кольцо, вращающееся вокруг своего диаметра, расположенного параллельно горизонтальной оси
Изобразить Кольцо, вращающееся вокруг своего диаметра, расположенного параллельно горизонтальной оси с постоянной угловой скоростью(

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


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru