forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Общие вопросы (http://forum.boolean.name/forumdisplay.php?f=166)
-   -   Вопросы от новичка (http://forum.boolean.name/showthread.php?t=15809)

pax 07.01.2013 11:31

Ответ: Вопросы от новичка
 
Мне уже смешно)
PHP код:

static GUIStyle _myBlueStyle
public static GUIStyle MyBlueStyle
{
   
get
   
{
       if(
_myBlueStyle)
       {
           
_myBlueStyle = new GUIStyle();
           var 
blueTex = new Texture2D(4,4,TextureFormat.ARGB32false);
           var 
pixels blueTex.GetPixels();
           for (
int i 0pixels.Lengthi++)
           {
               
pixels[i] = new Color(0,0,1,0.75f);
           }
           
blueTex.SetPixels(pixels);
           
_myBlueStyle.normal.background blueTex;
       } 
       return 
_myBlueStyle;
   }


А вот тебе пример загрузки ресурсов для редактора http://answers.unity3d.com/questions...editorgui.html

WISHMASTER35 07.01.2013 17:11

Ответ: Вопросы от новичка
 
Вложений: 1
Вот более путевые строки
Код:

                        Rect rect = GUILayoutUtility.GetRect( new GUIContent(name), normal, GUILayout.ExpandWidth(true) );
                        if(i == selected) FillRect(rect, Color.green);
                        if(GUI.Button(rect, name, normal)) {
                                if(selected != i) GUIUtility.keyboardControl = 0;
                                selected = i;
                        }

Все бы хорошо, но что за бред с Handles.DrawSolidRectangleWithOutline! Сразу после компиляции он еще выдает правильный цвет, но после первой перерисовки снова черным рисует. Странно, но в другом проекте работает.
Может есть где-то матрица трансформации цвета?

UPDATE:
Понял почему не работал Handles.DrawSolidRectangleWithOutline. Нужно было еще и Handles.color задать.
Впрочем все равно почему-то прямоугольник рисуется темнее, чем должен.

Вот код рисования списка
Код:

                        Rect rect = GUILayoutUtility.GetRect( new GUIContent(name), style, GUILayout.ExpandWidth(true) );
                        if(i == selected) {
                                Color blue = new Color( 61/255f, 128/255f, 223/255f );
                                FillRect(rect, blue);
                        }
                       
                        GUI.Label(rect, name, style);
                       
                        if(Event.current.type == EventType.MouseDown && rect.Contains(Event.current.mousePosition)) {
                                if(selected != i) GUIUtility.keyboardControl = 0;
                                Event.current.Use();
                                selected = i;
                        }


WISHMASTER35 07.01.2013 19:45

Ответ: Вопросы от новичка
 
Написал методы расширения для структуры Matrix4x4. Вроде и все работает, но матрица не изменяется.
Код:

        public static void SetPosition(this Matrix4x4 matrix, Vector3 position) {
                matrix.m03 = position.x;
                matrix.m13 = position.y;
                matrix.m23 = position.z;
        }

Что-то не так?

pax 07.01.2013 21:42

Ответ: Вопросы от новичка
 
ты изменяешь матрицу, но не возвращаешь ее туда, откуда взял

Morganolla 08.01.2013 13:21

Ответ: Вопросы от новичка
 
Вопрос- можно ли при одевании текстуры на спрайт сделать ее зеркальное отражение по оси Х или У ( типа ф-ии 'flip')

cahekp 08.01.2013 14:23

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от Morganolla (Сообщение 248653)
Вопрос- можно ли при одевании текстуры на спрайт сделать ее зеркальное отражение по оси Х или У ( типа ф-ии 'flip')

В материале у каждой текстуры есть свой Tiling и Offset.
Если Tiling по x изменить на -1, то изображение горизонтально отразится. Если изменить по y на -1, то, соответственно, отразится вертикально.

mauNgerS 08.01.2013 22:07

Ответ: Вопросы от новичка
 
Доброго времени суток.

Подскажите пожалуйста, как на юнити сделать такую манипуляцию

PHP код:

hmap=LoadImage("Media\levelrts11.bmp")

SetBuffer(ImageBuffer(hmap))
For 
z=0 To grid
    
For x=0 To grid
        GetColor x
,z
        map
(x,z)=ColorRed()
    
Next
Next
SetBuffer BackBuffer
() 


WISHMASTER35 08.01.2013 22:51

Ответ: Вопросы от новичка
 
mauNgerS, для загрузки текстуры просто сделай public Texture2D tex переменную и назначь ей значение в инспекторе. Остальное не понял.

Цитата:

ты изменяешь матрицу, но не возвращаешь ее туда, откуда взял
В смысле? Куда возвращать? После вызова метода матрица вообще не изменяется.

Вот еще проблема с Matrix4x4. Создаю матрицу Matrix4x4.Scale, делаю такую операцию rectMatrix.inverse.MultiplyPoint(mouse). И в итоге получаю вектор с NaN. Почему так? Должно же получатся такое mouse / scale.

seaman 08.01.2013 23:05

Ответ: Вопросы от новичка
 
Код:

        public static Matrix4x4 SetPosition(this Matrix4x4 matrix, Vector3 position) {
                matrix.m03 = position.x;
                matrix.m13 = position.y;
                matrix.m23 = position.z;
                return matrix;
        }

Не уверен, что нельзя использовать ref в первом параметре, но ни одного такого примера не видел. Проверять некогда.
Код:

Texture2D hmap = (Texture2D)Resources.Load("Media\levelrts11")
Texture2D map = new Texture2D();
for (int z=0; z < grid; z++)
{
    for(int x=0; x < grid; x++)
    {
        Color c = hmap.GetPixel(x, z);
        map.SetPixel(x, z, Color.red);
    }
}


pax 09.01.2013 00:37

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от WISHMASTER35 (Сообщение 248709)
В смысле? Куда возвращать? После вызова метода матрица вообще не изменяется.

При использовании свойства ты берешь копию матрицы и передаешь ее в функцию, меняющую ее значения. Но обратно в это свойство ты ее не назначаешь. Матрица не класс, а ValueType - не ссылочный тип данных.

Т.е. в твоем случае надо
PHP код:

Handles.matrix Handles.matrix.SetPosition(new Vector3(1,2,3)); 

вместо ожидаемого неправильного
PHP код:

Handles.matrix.SetPosition(new Vector3(1,2,3)); 

В итоге возвращаемая матрица попадает в никуда

mauNgerS 09.01.2013 21:52

Ответ: Вопросы от новичка
 
seaman, приведённый тобой код не работает, но теперь понятно куда копать.

Можете помочь с этой функцией:

PHP код:

Scaner=CreatePivot()

Function 
GetHeight#(X#,Z#)
    
PositionEntity Scaner,X,50,Z
    RotateEntity Scaner
,90,0,0
    EntityPick Scaner
,100
    
Return PickedY()
End Function 


seaman 09.01.2013 22:19

Ответ: Вопросы от новичка
 
А это потому что я не понимаю, что делает Ваш код. Если в первом случае еще что-то можно попытаться догадаться, то тут совсем не понятно. Я Блиц не знаю. Посмотрел справочник - не смог понять что делает EntityPick - "Возвращает ближайшую сущность впереди указанной". Что значит "впереди"? По глобальной оси Z? Или ближе к камере? Похоже, что ближе к камере, т.к. в первом случае не имеет смысла узнавать ее координату Y - она будет та же, что у Вашего Сканера.
Лучше подождите, когда появятся спецы по Блицуи Юнити.

mauNgerS 09.01.2013 22:56

Ответ: Вопросы от новичка
 
Ок прошу прощения.

Первый код:
Имеется чёрно-белая картинка. Карта высот.
Я загружаю её в память. В цикле прохожусь по каждому пикселю и записываю значение цвета в массив. (красный, зеленый или синий - значения не имеет, какой-то один)

В дальнейшем я могу использовать этот массив для построения игрового уровня.

Второй код в целом позволяет узнать высоту любого участка игрового уровня. Это нужно для того, чтобы допустим посадить лес. Чтобы деревья не висели над землёй и не проваливались, а были на земле.

RegIon 09.01.2013 22:59

Ответ: Вопросы от новичка
 
Цитата:

Сообщение от mauNgerS (Сообщение 248824)
seaman, приведённый тобой код не работает, но теперь понятно куда копать.

Можете помочь с этой функцией:

PHP код:

Scaner=CreatePivot()

Function 
GetHeight#(X#,Z#)
    
PositionEntity Scaner,X,50,Z
    RotateEntity Scaner
,90,0,0
    EntityPick Scaner
,100
    
Return PickedY()
End Function 


Гляди что есть: http://shgames.ru/
(спер из подписи PAXa)

mauNgerS 09.01.2013 23:12

Ответ: Вопросы от новичка
 
Blitz3D to Unity3D я смотрю в первую очередь.
Но на эти темы не нашёл там ответа


Часовой пояс GMT +4, время: 09:10.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot