как нарисовать сектор

Форум для самых маленьких, а так же тех, кому недосуг читать справку самостоятельно.

как нарисовать сектор

Сообщение rian 16 апр 2013, 21:39

как на GUI.DrawTexture(new Rect...) нарисовать не Rect(), а сектор с заданным углом?
rian
UNIт
 
Сообщения: 101
Зарегистрирован: 22 мар 2013, 12:49

Re: как нарисовать сектор

Сообщение Woolf 16 апр 2013, 21:44

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

Re: как нарисовать сектор

Сообщение rian 16 апр 2013, 21:48

есть хелп как рисовать?
rian
UNIт
 
Сообщения: 101
Зарегистрирован: 22 мар 2013, 12:49

Re: как нарисовать сектор

Сообщение Woolf 16 апр 2013, 21:52

rian писал(а):есть хелп как рисовать?


Треугольниками, как же еще..
http://docs.unity3d.com/Documentation/S ... ce/GL.html
Разработчик theFisherOnline - там, где клюёт
Разработчик Atom Fishing II - Первая 3D MMO про рыбалку
Разработчик Atom Fishing - Рыбалка на поплавок, донку, нахлыст, блесну в постъядерный период.
Аватара пользователя
Woolf
Адепт
 
Сообщения: 7179
Зарегистрирован: 02 мар 2009, 16:59

Re: как нарисовать сектор

Сообщение rian 16 апр 2013, 22:04

я имею в виду чтобы оно было аналогично GUI элементам, если просто треугольник он же будет в сцене так ведь?
rian
UNIт
 
Сообщения: 101
Зарегистрирован: 22 мар 2013, 12:49

Re: как нарисовать сектор

Сообщение rian 23 апр 2013, 20:41

попробовал запустить пример из линий, ничего не увидел
Синтаксис:
Используется csharp
private Material lineMaterial ;
       
        private void CreateLineMaterial() {
    if( !lineMaterial ) {
        lineMaterial = new Material( "Shader \"Lines/Colored Blended\" {" +
            "SubShader { Pass { " +
            "    Blend SrcAlpha OneMinusSrcAlpha " +
            "    ZWrite Off Cull Off Fog { Mode Off } " +
            "    BindChannels {" +
            "      Bind \"vertex\", vertex Bind \"color\", color }" +
            "} } }" );
        lineMaterial.hideFlags = HideFlags.HideAndDontSave;
        lineMaterial.shader.hideFlags = HideFlags.HideAndDontSave;
    }
}
        void OnPostRender() {
    CreateLineMaterial();
    // set the current material
    lineMaterial.SetPass( 0 );
    GL.Begin( GL.LINES );
    GL.Color( new Color(1f,1f,1f,0.5f) );
    GL.Vertex3( 0, 0, 0 );
    GL.Vertex3( 1, 0, 0 );
    GL.Vertex3( 0, 10, 0 );
    GL.Vertex3( 1, 10, 0 );
    GL.Color( new Color(0,0,0,0.5f) );
    GL.Vertex3( 0, 0, 0 );
    GL.Vertex3( 0, 1, 0 );
    GL.Vertex3( 1, 0, 0 );
    GL.Vertex3( 1, 1, 0 );
    GL.End();
}
rian
UNIт
 
Сообщения: 101
Зарегистрирован: 22 мар 2013, 12:49

Re: как нарисовать сектор

Сообщение rian 23 апр 2013, 21:33

также пробовал создать пирамиду из mesh, но получаю ошибку Assets/Resources/Scripts/wall.cs(94,17): error CS0246: The type or namespace name `List`1' could not be found. Are you missing a using directive or an assembly reference?

Синтаксис:
Используется csharp
public void InstantiateMesh (Mesh _mesh)
  {
    GameObject go = new GameObject ();
    MeshFilter meshFilter = go.AddComponent (typeof (MeshFilter)) as MeshFilter;
    MeshRenderer meshRenderer = go.AddComponent (typeof (MeshRenderer)) as MeshRenderer;
    meshFilter.mesh = _mesh;
  }
       
        private List <Vector3> vertices;
        private int[] triangles;
       
        private Mesh CreateMesh ()
        {
               
                vertices.add(new Vector3(0f,0f,0f));
                vertices.add(new Vector3(0f,1f,0f));
                vertices.add(new Vector3(0f,0f,1f));
                vertices.add(new Vector3(1f,0f,0f));
               
               
                triangles[0] = 0;
                triangles[1] = 1;
                triangles[2] = 2;
                triangles[3] = 0;
                triangles[4] = 1;
                triangles[5] = 3;      
                triangles[6] = 0;
                triangles[7] = 2;
                triangles[8] = 3;
                triangles[9] = 1;
                triangles[10] = 2;
                triangles[11] = 3;
               
       
                Mesh mesh = meshFilter.sharedMesh;
                mesh.Clear();
               
                mesh.vertices = vertices.toArray();
                //mesh.normals = allNormals;
                mesh.triangles = triangles;
                mesh.uv = uvs;
    return mesh;
        }
rian
UNIт
 
Сообщения: 101
Зарегистрирован: 22 мар 2013, 12:49

Re: как нарисовать сектор

Сообщение rian 23 апр 2013, 21:45

еще раз уточню, я пытаюсь сделать элемент gui в виде сектора с меняющимся углом
У вас нет доступа для просмотра вложений в этом сообщении.
rian
UNIт
 
Сообщения: 101
Зарегистрирован: 22 мар 2013, 12:49

Re: как нарисовать сектор

Сообщение rian 23 апр 2013, 21:50

нашел пример сектора в документации http://docs.unity3d.com/Documentation/S ... idArc.html
говорит The name `Handles' does not exist in the current context



Синтаксис:
Используется csharp
void OnGUI(){
       
                  Handles.color = new Color(1,1,1,0.2f);
            Handles.DrawSolidArc(target.transform.position,
                    target.transform.up,
                    -target.transform.right,
                    180,
                    target.shieldArea);
            Handles.color = Color.white;
            target.shieldArea =
            Handles.ScaleValueHandle(target.shieldArea,
                            target.transform.position + target.transform.forward*target.shieldArea,
                            target.transform.rotation,
                            1,
                            Handles.ConeCap,
                            1);
           
        }
rian
UNIт
 
Сообщения: 101
Зарегистрирован: 22 мар 2013, 12:49

Re: как нарисовать сектор

Сообщение BornFoRdeatH 23 апр 2013, 22:27

rian писал(а):нашел пример сектора в документации http://docs.unity3d.com/Documentation/S ... idArc.html
говорит The name `Handles' does not exist in the current context



Синтаксис:
Используется csharp
void OnGUI(){
       
                  Handles.color = new Color(1,1,1,0.2f);
            Handles.DrawSolidArc(target.transform.position,
                    target.transform.up,
                    -target.transform.right,
                    180,
                    target.shieldArea);
            Handles.color = Color.white;
            target.shieldArea =
            Handles.ScaleValueHandle(target.shieldArea,
                            target.transform.position + target.transform.forward*target.shieldArea,
                            target.transform.rotation,
                            1,
                            Handles.ConeCap,
                            1);
           
        }


Это только для редактора.
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2377
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

Re: как нарисовать сектор

Сообщение Egoor 23 апр 2013, 22:36

Нарисовать текстуру в виде сектора и рисовать ее за место стандартных текстур гуи не устраивает?
Everybody Lies
Аватара пользователя
Egoor
UNец
 
Сообщения: 47
Зарегистрирован: 10 июн 2012, 11:11

Re: как нарисовать сектор

Сообщение Medveckij 23 апр 2013, 22:51

Рисуйте стандартный GUITexture полупрозрачный png. И если это кнопка, то при наводе курсора ставьте проверку на наличие пикселя. Таким образом можно создать GUI абсолютно любой формы. Привязка к Rect`у отпадает. Таким образом, в итоге... я делал вот такую каку - Изображение


А то, что пытаетесь сделать вы - пустая трата времени. Проверено.
Аватара пользователя
Medveckij
Адепт
 
Сообщения: 1014
Зарегистрирован: 10 ноя 2012, 15:44

Re: как нарисовать сектор

Сообщение BornFoRdeatH 23 апр 2013, 23:00

Если я правильно понял, ему нужно вращать изображение, отсюда могут появлятся искажения. Я бы наверное скорее всего реализовал бы это через шейдер и текстуру с альфой.
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2377
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

Re: как нарисовать сектор

Сообщение rian 23 апр 2013, 23:07

вариант с заранее отрисованными текстурами можно, но думаю это на крайний случай, этот сектор это прогресбар и по логике он бы должен нарастать плавно
сделать спрайт штук на 40 элементов?

на счет "Это только для редактора." не понял
rian
UNIт
 
Сообщения: 101
Зарегистрирован: 22 мар 2013, 12:49

Re: как нарисовать сектор

Сообщение BornFoRdeatH 23 апр 2013, 23:53

rian писал(а):вариант с заранее отрисованными текстурами можно, но думаю это на крайний случай, этот сектор это прогресбар и по логике он бы должен нарастать плавно
сделать спрайт штук на 40 элементов?

на счет "Это только для редактора." не понял


Класс Handles предназначен только для работы редактора, тоесть создания плагинов для юнити, в игре он работать не будет.

Как я уже говорил, такое мне кажется лучше делать шейдером, как пример:
http://answers.unity3d.com/questions/14 ... timer.html
Не бойся, если ты один, бойся, если ты ноль.
BornFoRdeatH
Адепт
 
Сообщения: 2377
Зарегистрирован: 22 окт 2011, 23:41
Откуда: Украина
Skype: bornfordeath

След.

Вернуться в Почемучка

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

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