Радиальный progress bar

Общие вопросы о Unity3D

Re: Радиальный progress bar

Сообщение RestFall 16 авг 2013, 02:03

Neyl писал(а):Полоску, всмысле прямой прогресс бар? Ни с чем колдовать не надо, просто нарисовать два прямоугольника - для фона и для полоски.
Синтаксис:
Используется csharp
using UnityEngine;

namespace Crankshaft.XGUI
{
    public class HorisontalProgressBar : BaseElement
    {
        private Rect m_rect;
        private Rect m_barRect;

        public HorisontalProgressBar(Rect rect)
        {
            m_rect = rect;
            m_barRect = m_rect;
            InitMaterials();
        }

        public void Recalculate(Rect rect)
        {
            m_rect = rect;
        }

        public float Progress
        {
            set
            {
                float val = Mathf.Clamp01(value);
                m_barRect.width = m_rect.width * val;
            }
        }

        public void Draw()
        {
            if (Event.current.type == EventType.repaint)
            {
                BeginFilledRects();
                DrawContent();
                EndFilledRects();
            }
        }

        public void DrawContent()
        {
            GL.Color(Color.gray);
            DrawFilledRect(m_rect);//background

            GL.Color(Color.green);
            DrawFilledRect(m_barRect);//bar
        }
    }
}

нет нет)) поинтер спидометра) т.е. палочка(полоска) которая двигается по окружности) хотел с помощью вашего метода реализовать пришлось колдовать с startAngle и endAngle..)))
Аватара пользователя
RestFall
UNIт
 
Сообщения: 118
Зарегистрирован: 21 мар 2012, 19:32
Откуда: Kazakhstan, Apple city
  • Сайт

Re: Радиальный progress bar

Сообщение getAlex 16 авг 2013, 03:36

Golandez писал(а):Изображение
Как ее сделать лоуполи, чтобы визуально край выглядел ровно, а не шестеренкой? Считаем, что ее развернули и текстура ложится корректно на нужную нам сторону.


Смотри во вложении. Только я взял спираль из одной линии, а нужно из одной ленточки. И угловатость лоуполи не играет роли, если текстура транспарент и края, смывающие углы, в альфе.
У вас нет доступа для просмотра вложений в этом сообщении.
getAlex
Адепт
 
Сообщения: 1775
Зарегистрирован: 10 авг 2013, 18:30

Re: Радиальный progress bar

Сообщение Woolf 16 авг 2013, 12:30

Нафига эти танцы с бубном со спиралями, если проще всего делать через GL ?
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: Радиальный progress bar

Сообщение RestFall 16 авг 2013, 19:34

Neyl писал(а):Полоску, всмысле прямой прогресс бар? Ни с чем колдовать не надо, просто нарисовать два прямоугольника - для фона и для полоски.
Синтаксис:
Используется csharp
using UnityEngine;

namespace Crankshaft.XGUI
{
    public class HorisontalProgressBar : BaseElement
    {
        private Rect m_rect;
        private Rect m_barRect;

        public HorisontalProgressBar(Rect rect)
        {
            m_rect = rect;
            m_barRect = m_rect;
            InitMaterials();
        }

        public void Recalculate(Rect rect)
        {
            m_rect = rect;
        }

        public float Progress
        {
            set
            {
                float val = Mathf.Clamp01(value);
                m_barRect.width = m_rect.width * val;
            }
        }

        public void Draw()
        {
            if (Event.current.type == EventType.repaint)
            {
                BeginFilledRects();
                DrawContent();
                EndFilledRects();
            }
        }

        public void DrawContent()
        {
            GL.Color(Color.gray);
            DrawFilledRect(m_rect);//background

            GL.Color(Color.green);
            DrawFilledRect(m_barRect);//bar
        }
    }
}

вроде получилось сделать то что хотел, это палочка спидометра красная, на видео можете увидеть, хотел еще узнать, а как можно избавиться от лесенек? рисуется отлично но как то квадратиками круг идет... пытался в fiilMaterial по колдовать, не выходит, такая же лесенка из квадратиков...

Аватара пользователя
RestFall
UNIт
 
Сообщения: 118
Зарегистрирован: 21 мар 2012, 19:32
Откуда: Kazakhstan, Apple city
  • Сайт

Re: Радиальный progress bar

Сообщение Diab10 16 авг 2013, 20:17

Как камера реализована, если не секрет? :)
Своё, или из другого источника?
Аватара пользователя
Diab10
Адепт
 
Сообщения: 3401
Зарегистрирован: 17 мар 2011, 20:42
Откуда: 123 RUS
Skype: diab1023

Re: Радиальный progress bar

Сообщение Neyl 16 авг 2013, 21:22

RestFall писал(а):как можно избавиться от лесенек? рисуется отлично но как то квадратиками круг идет... пытался в fiilMaterial по колдовать, не выходит, такая же лесенка из квадратиков...

Ага, с альянсингом проблема при таком способе отрисовки. Меня лесенки не сильно напрягали, поскольку поверх прогрессбара рисуется текстура с "бордюром", который скрывает ступенчатые края. Но, в теории, избавится от лесенки можно, если отрисовывать полоску не залитую сплошным цветом, а покрытую материалом с подходящей текстурой, растянутой по длине. Что то вроде 1*32 пикселя, в которой крайние пиксели прозрачные. И текстурные координаты нужно будет задавать для каждой пары вертексов
Синтаксис:
Используется csharp
GL.Begin(GL.TRIANGLE_STRIP);
for (int i = 0; i < m_activeSegments; i++)
{
GL.TexCoord(new Vector3(0, 0, 0));
GL.Vertex3(m_cache[i].x, m_cache[i].y, 0f);
GL.TexCoord(new Vector3(1, 0, 0));
GL.Vertex3(m_cache[i].z, m_cache[i].w, 0f);
}
GL.End();
Аватара пользователя
Neyl
UNIверсал
 
Сообщения: 404
Зарегистрирован: 20 июн 2010, 10:17

Re: Радиальный progress bar

Сообщение RestFall 17 авг 2013, 15:47

Diab10 писал(а):Как камера реализована, если не секрет? :)
Своё, или из другого источника?

мне придется вас убить если скажу))))))
так вот, это обычный лерп координат камеры и авто, где значение равно скорости машины и не более...))))))))))
Аватара пользователя
RestFall
UNIт
 
Сообщения: 118
Зарегистрирован: 21 мар 2012, 19:32
Откуда: Kazakhstan, Apple city
  • Сайт

Re: Радиальный progress bar

Сообщение RestFall 17 авг 2013, 15:48

Neyl писал(а):
RestFall писал(а):как можно избавиться от лесенек? рисуется отлично но как то квадратиками круг идет... пытался в fiilMaterial по колдовать, не выходит, такая же лесенка из квадратиков...

Ага, с альянсингом проблема при таком способе отрисовки. Меня лесенки не сильно напрягали, поскольку поверх прогрессбара рисуется текстура с "бордюром", который скрывает ступенчатые края. Но, в теории, избавится от лесенки можно, если отрисовывать полоску не залитую сплошным цветом, а покрытую материалом с подходящей текстурой, растянутой по длине. Что то вроде 1*32 пикселя, в которой крайние пиксели прозрачные. И текстурные координаты нужно будет задавать для каждой пары вертексов
Синтаксис:
Используется csharp
GL.Begin(GL.TRIANGLE_STRIP);
for (int i = 0; i < m_activeSegments; i++)
{
GL.TexCoord(new Vector3(0, 0, 0));
GL.Vertex3(m_cache[i].x, m_cache[i].y, 0f);
GL.TexCoord(new Vector3(1, 0, 0));
GL.Vertex3(m_cache[i].z, m_cache[i].w, 0f);
}
GL.End();

да да) не пришло в голову навесит сверху текстуру..)))) спасибо за реализацию! отличная вещь!)
Аватара пользователя
RestFall
UNIт
 
Сообщения: 118
Зарегистрирован: 21 мар 2012, 19:32
Откуда: Kazakhstan, Apple city
  • Сайт

Re: Радиальный progress bar

Сообщение Kayler 26 авг 2013, 17:32

всем спасибо получилось :) (знаю что слоу, занят был другим))
Аватара пользователя
Kayler
Адепт
 
Сообщения: 1038
Зарегистрирован: 25 авг 2010, 23:49
Откуда: Чувашия

Пред.

Вернуться в Общие вопросы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16