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)

WISHMASTER35 28.10.2012 15:45

Ответ: Вопросы от новичка
 
Сложно будет у всех объектов так увеличивать коллайдеры.
Да и другие проблемы это может вызвать. Например, когда будешь стрелять по дому, то эффекты типа искр от пули будят не на самом доме.

pax 28.10.2012 15:54

Ответ: Вопросы от новичка
 
Для эффектов - другие коллайдеры

Lestar 28.10.2012 16:19

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

Сообщение от Okay (Сообщение 241380)
Читаешь слово через два.
На картинке видно, что если подбежать к дому, то голова зайдет в объект.

На картинке видно на белом фоне какую то серую фуету. "При анимации "Бег"" это при анимации, не при перемещении персонажа.

Okay 28.10.2012 16:33

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

Сообщение от Lestar (Сообщение 241392)
На картинке видно на белом фоне какую то серую фуету. "При анимации "Бег"" это при анимации, не при перемещении персонажа.

Согласен. Не так сформулировал предложение.

WISHMASTER35 28.10.2012 17:23

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

Сообщение от pax (Сообщение 241385)
Для эффектов - другие коллайдеры

Ну не знаю. Может в ААА играх действительно для пуль используются более точные коллайдеры, но я сомневаюсь. Тем более для простой игры.

pax 28.10.2012 17:27

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

Картинка из статьи:

Okay 28.10.2012 18:31

Ответ: Вопросы от новичка
 
Так это ведь стрельба по пингу

WISHMASTER35 28.10.2012 20:20

Ответ: Вопросы от новичка
 
Что может значить такая ошибка при компилировании шейдера?
Код:

Shader error in 'Map/Map': D3D shader assembly failed with: (7): error X5204: Read of uninitialized component(*) in r1: r/x/0 g/y/1 b/z/2 *a/w/3

Shader Assembly: ps_2_0
; 3 ALU, 1 TEX
dcl_2d s0
def c0, 0.00000000, 0, 0, 0
dcl t0.xy
texld r0, t0, s0
mul r0.xyz, r0, r1.w
mov_pp r0.w, c0.x
mov_pp oC0, r0

Причем шейдер все же компилируется.

Вот сам шейдер.
Код:

SubShader {
                Tags { "RenderType"="Opaque" }
                LOD 200
               
                CGPROGRAM
              #pragma surface surf SimpleLambert finalcolor:MyFinalColor noambient
              //finalcolor:MyFinalColor noambient
             
              struct Input {
                float2 uv_MainTex;
                float4 color : COLOR;
              };
              sampler2D _MainTex;
             
              half4 LightingSimpleLambert (SurfaceOutput s, half3 lightDir, half atten) {
                half NdotL = dot (s.Normal, lightDir);
                  half4 c;
                  c.rgb = s.Albedo * _LightColor0.rgb * (NdotL * atten * 2);
                  c.a = s.Alpha;
                  return c;
              }
               
                void MyFinalColor(Input IN, SurfaceOutput o, inout fixed4 color) {
                        float shadow = IN.color.a;
                        float3 ambient = UNITY_LIGHTMODEL_AMBIENT;
                        float scale = min(ambient.r, shadow);
                       
                        color.rgb = o.Albedo.rgb * scale;
                        color.a = o.Alpha;
              }
               
              void surf (Input IN, inout SurfaceOutput o) {
                      //float3 ambient = UNITY_LIGHTMODEL_AMBIENT;
                      //float shadow = IN.color.a;
                      //float scale = min(ambient.r, shadow);
                o.Albedo = tex2D (_MainTex, IN.uv_MainTex).rgb;
            }
               
                ENDCG
        }

И виновато в этом похоже эта строчка IN.color.a

pax 28.10.2012 20:53

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

Сообщение от Okay (Сообщение 241410)
Так это ведь стрельба по пингу

Ну а что разве не в тему?

Цитата:

Сообщение от WISHMASTER35 (Сообщение 241403)
Ну не знаю. Может в ААА играх действительно для пуль используются более точные коллайдеры, но я сомневаюсь. Тем более для простой игры.


WISHMASTER35 28.10.2012 21:10

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

Сообщение от Okay (Сообщение 241380)
Читаешь слово через два.
На картинке видно, что если подбежать к дому, то голова зайдет в объект.
Коллайдер убогий.
Сам исправил. Увеличил коллайдер у дома

pax, речь шла про коллайдер на доме. А на твоем рисунке персонаж.

pax 28.10.2012 21:12

Ответ: Вопросы от новичка
 
Я давал совет про чарактер контроллер и продолжил свою мысль.

WISHMASTER35 03.11.2012 17:10

Ответ: Вопросы от новичка
 
Я не вот пойму, такое для C# должно работать?
Код:

public static implicit operator Vector3i(int x, int y, int z) {
  return new Vector3i(x, y, z);
}

А то моя извращенная фантазия это выдумала. А использовать это не получается.

Randomize 03.11.2012 17:17

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

Сообщение от WISHMASTER35 (Сообщение 242378)
Я не вот пойму, такое для C# должно работать?
Код:

public static implicit operator Vector3i(int x, int y, int z) {
  return new Vector3i(x, y, z);
}

А то моя извращенная фантазия это выдумала. А использовать это не получается.

Оу! И как это должно работать?

pax 03.11.2012 17:17

Ответ: Вопросы от новичка
 
приведение выполняется для одной переменной исходного типа в нужный тип

WISHMASTER35 03.11.2012 21:56

Ответ: Вопросы от новичка
 
pax, т.е. оно только int x приводит к Vector3i? А в операторе используется все 3 переменные.
Вообщем жаль, что нельзя как-то передать в метод либо xyz, либо просто Vector3i.
А вот когда жмешь правой кнопкой по папке в ассетах, то появляется меню с выбором что можно создать. Как туда добавить свой пункт?

pax 04.11.2012 08:44

Ответ: Вопросы от новичка
 
http://docs.unity3d.com/Documentatio.../MenuItem.html
Только начинаться путь должен с Assets

radiobutton 05.11.2012 04:50

Ответ: Вопросы от новичка
 
Object lol = UnityEditor.PrefabUtility.CreateEmptyPrefab("lol.p refab");

На это он мне выводит
Цитата:

Couldn't create asset file!
UnityEditor.PrefabUtility:CreateEmptyPrefab(String )
CreateGame:Awake() (at Assets/CreateGame.cs:8)
и вот это заодно. но это не связано вроде )
Цитата:

There are inconsistent line endings in the 'Assets/CreateGame.cs' script. Some are Mac OS X (UNIX) and some are Windows.
This might lead to incorrect line numbers in stacktraces and compiler errors. Many text editors can fix this using Convert Line Endings menu commands.
Я хочу создать сцену уже при запуске из кода. Тоесть отдельно создать префаб, создать геймобъекты , привязать их к префабам, далее сделать несколько экземпляров префабов. итд +)

Lestar 05.11.2012 05:43

Ответ: Вопросы от новичка
 
1.PrefabUtility это эдитор класс, в рантайме не работает.
2.File-> Advanced Save Option-> Encoding: 1251, Line endings: Windows(CR LF)

radiobutton 05.11.2012 06:40

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

Сообщение от Lestar (Сообщение 242488)
1.PrefabUtility это эдитор класс, в рантайме не работает.
2.File-> Advanced Save Option-> Encoding: 1251, Line endings: Windows(CR LF)

1. а как можно создавать префабы из кода в рантайме? и к какому они классу будут относиться? Object ? или нужно привести.

pax 05.11.2012 08:34

Ответ: Вопросы от новичка
 
В рантайме нельзя создавать префабы, можно копировать (Instantiate) существующие префабы или уже созданные объекты. Тип префаба - GameObject.

RegIon 05.11.2012 20:31

Ответ: Вопросы от новичка
 
Вложений: 1
Вложение 17982
норм снег и следы для простенькой игры?
Что посоветуете ?

FREE MAN 05.11.2012 21:28

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

Сообщение от Костян (Сообщение 242540)
Вложение 17982
норм снег и следы для простенькой игры?
Что посоветуете ?

Жесть!:-D

Lestar 05.11.2012 23:16

Ответ: Вопросы от новичка
 
Следы делаются декалями ,а не обьектами. И тень должна быть вовнутрь следа, а не наружу. Бугорчатых следов не бывает.

RegIon 07.11.2012 19:06

Ответ: Вопросы от новичка
 
Вложений: 1
Значит ты слепой, коль видишь тень наружу..
Вложение 17999
и чет я не заметил особо что бы так кто-то делал. мануал даже есть. http://forum.boolean.name/showthread.php?t=16914

radiobutton 07.11.2012 19:13

Ответ: Вопросы от новичка
 
Я тоже на первом скрине видел след наружу. После второго, посмотрел и они опять были наружу (на первом всмысле), потом присмотрелся, напряг зрения и они стали внутрь :)

Lestar 08.11.2012 01:55

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

Сообщение от Костян (Сообщение 242813)
Значит ты слепой, коль видишь тень наружу..

Зрячему респект и уважуха за 78 ДК и 16 ms в пустой сцене.

pax 08.11.2012 04:44

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

Сообщение от Lestar (Сообщение 242858)
Зрячему респект и уважуха за 78 ДК и 16 ms в пустой сцене.

16 ms это VSync, а дравколы да, материал мешам следов надо было назначать через sharedMaterial вероятно.

radiobutton 08.11.2012 12:22

Ответ: Вопросы от новичка
 
Происходит ли дублирование кода если мы один скрипт привязываем к разным геймобъектам.

или если у нас есть прибаф в котором есть геймобъект в котором есть скрипт. если мы создаем эклемляры префаба, код в скрипте дублируется?

Если я буду через код создавать геймобъекты и в коде же к нам привязывать скрипты, будит ли дубляция кода?

или же все итерации одного и того же скрипта проходят в цикле?

хотя скрипт ето же класс. а в каждом геймобъекте его объект создается. и дублирование кода тут уже на совести разработчиков mono.

чота я бред спросил ыыы.

Lestar 08.11.2012 13:29

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

Сообщение от pax (Сообщение 242864)
16 ms это VSync

VSync не дает 16 mc.

pax 08.11.2012 14:22

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

Сообщение от Lestar (Сообщение 242897)
VSync не дает 16 mc.

Часто наблюдаю вот такую картину:


Цитата:

Сообщение от radiobutton (Сообщение 242888)
Происходит ли дублирование кода если мы один скрипт привязываем к разным геймобъектам.

или если у нас есть прибаф в котором есть геймобъект в котором есть скрипт. если мы создаем эклемляры префаба, код в скрипте дублируется?

Если я буду через код создавать геймобъекты и в коде же к нам привязывать скрипты, будит ли дубляция кода?

или же все итерации одного и того же скрипта проходят в цикле?

хотя скрипт ето же класс. а в каждом геймобъекте его объект создается. и дублирование кода тут уже на совести разработчиков mono.

чота я бред спросил ыыы.

Нет никакого дублирования, просто разные экземпляры объектов в памяти. В готовом приложении вообще кода нет, только скомпилированные dll

radiobutton 08.11.2012 15:11

Ответ: Вопросы от новичка
 
1) а префабы это по сути нужны только для удобного добавления одинаковых геймобъектов в сцену? С помощью редактора?

к примеру я точно также могу создать в цикле несколько одинаковых геймобъектов через код и будит тоже самое?

2) Что такое multiple sub meshes?

3) Как сохранить значения параментов, которые я изменил у объектов сцены в рантайме?

WISHMASTER35 08.11.2012 16:48

Ответ: Вопросы от новичка
 
radiobutton, 1) Да. Только и с помощью кода тоже.
3) Если в игре, то самое простое PlayerPrefab.

У меня пару вопросов по шейдерам.
1) В шейдере можно создать массив из которого потом буду брать значения? Массив будет размером где-то 256.
2) В шейдере можно float разделить на 4 байта, а потом из этих байт сделать цвет? Т.е. хранить rgba в одном float.

pax 09.11.2012 07:53

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

Сообщение от WISHMASTER35 (Сообщение 242918)
У меня пару вопросов по шейдерам.
1) В шейдере можно создать массив из которого потом буду брать значения? Массив будет размером где-то 256.
2) В шейдере можно float разделить на 4 байта, а потом из этих байт сделать цвет? Т.е. хранить rgba в одном float.

1) Используй текстуру
2) не занимался таким, вероятно можно

SBJoker 09.11.2012 12:12

Ответ: Вопросы от новичка
 
Учитывая устройство float представлять его как 4 байта можно с некоторыми оговорками, а именно не проводить с ним никаких арифметических операций.

И вообще почему не юзать int32 в этом случае?

radiobutton 09.11.2012 16:24

Ответ: Вопросы от новичка
 
Я так понимаю, все что в папке assets будит загружено при старте игры в оперативную память? Или нет ?

Можно, например, считать каким нить классом в юнити из оперативной памяти, в которой есть текстовый файл, его содержимое? (Соответственно, сначало етот файл должен как то попасть в оперативную память)

pax 09.11.2012 17:09

Ответ: Вопросы от новичка
 
Будут загружены только нужные.

Текстовый файл можно считать следующим образом:
1. Помести файл в папку /Assets/Resources/
2. в скрипте
PHP код:

var text = ((TextAsset)Resources.Load("fileNameWithoutExtension"typeof(TextAsset))).text


radiobutton 09.11.2012 18:38

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

Сообщение от pax (Сообщение 243049)
Будут загружены только нужные.

Текстовый файл можно считать следующим образом:
1. Помести файл в папку /Assets/Resources/
2. в скрипте
PHP код:

var text = ((TextAsset)Resources.Load("fileNameWithoutExtension"typeof(TextAsset))).text


1) Нужные ето какие? :)

2) Resources.Load считывает с оперативной памяти уже?

3) /Assets/Resources/ это какая то особая папка? Оттуда в оперативную память грузятся?

Lestar 09.11.2012 19:18

Ответ: Вопросы от новичка
 
1.Используемые
2.Грузит в память
3.Папка под названием Resources. Пака сам не загрузишь, никуда оттуда не грузится.

WISHMASTER35 09.11.2012 20:17

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

Сообщение от SBJoker (Сообщение 243014)
Учитывая устройство float представлять его как 4 байта можно с некоторыми оговорками, а именно не проводить с ним никаких арифметических операций.

И вообще почему не юзать int32 в этом случае?

Если можно в шейдере, в структуре Input вместо float4 color : COLOR; использовать int32, то все равно. Только в CG int32 нету, а есть просто int.
Только черт знает как разделить на байты, если в шейдере нет байта.

RegIon 10.11.2012 10:23

Ответ: Вопросы от новичка
 
Тока сей понял что у меня "следы" не батчатся почему-то, если на объекте лежит bump-текстура - тот он уже не может батчиться?

pax 10.11.2012 10:51

Ответ: Вопросы от новичка
 
Они не будут батчится, если ты им назначаешь материал через renderer.material а не через renderer.sharedMaterial, потому что в первом случае создаются разные материалы.

radiobutton 10.11.2012 12:50

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

Сообщение от pax (Сообщение 243111)
Они не будут батчится, если ты им назначаешь материал через renderer.material а не через renderer.sharedMaterial, потому что в первом случае создаются разные материалы.

а чем шаредматериал от материал отличаются?

И что такое uv1 и uv2 координаты у вертексов меша? xD

pax 10.11.2012 13:08

Ответ: Вопросы от новичка
 
1. sharedMaterial - общий матриал, если его менять, то будет меняться на всеъ объектах, где он назначен. material - индивидуальный материал объекта, если его изменить, то он становится копией sharedMaterial с индивидуальными параметрами.
2. uv1 - основные текстурные координаты объекта. uv2 обычно текстурные координаты для лайтмэп.

radiobutton 10.11.2012 13:37

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

Сообщение от pax (Сообщение 243123)
2. uv1 - основные текстурные координаты объекта. uv2 обычно текстурные координаты для лайтмэп.

Но ведь есть же еще просто uv.

Quaternion.AngleAxis , тут нужно угол в градусах задавать.
Quaternion.AxisAngle , а тут в радианах?
пишет, что второй вариант устаревший, но разьве в радианах не быстрее расчеты идут? :)

pax 10.11.2012 14:44

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

Quaternion.AxisAngle метод устарел и его использовать не надо. В градусах понятнее и проще, всего навсего медленнее на одно умножение.

radiobutton 10.11.2012 17:00

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

Сообщение от pax (Сообщение 243129)
uv = uv1

Quaternion.AxisAngle метод устарел и его использовать не надо. В градусах понятнее и проще, всего навсего медленнее на одно умножение.

хм, а если я буду один и тот же угол подставлять и в эту функцию и в какие нить расчеты с синусами. Ведь Mathf.Sin работает с радианами. Постоянно переводить ?)

WISHMASTER35 10.11.2012 17:14

Ответ: Вопросы от новичка
 
Вот интересно методы интерфейса работают быстрее, чем переопределенные абстрактные методы? Ведь во втором случае должен быть какой-то поиск адреса метода.
А в C# нельзя сделать, чтобы метод мог вызваться даже у не созданного объекта? Есть интерфейс с методом Get и надо, чтобы он возвращал дефолтное значение, если объект не создан.

pax 10.11.2012 17:17

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

Сообщение от radiobutton (Сообщение 243141)
хм, а если я буду один и тот же угол подставлять и в эту функцию и в какие нить расчеты с синусами. Ведь Mathf.Sin работает с радианами. Постоянно переводить ?)

Ну так сам напиши быстро как тебе надо ;)

Цитата:

Сообщение от WISHMASTER35 (Сообщение 243147)
Вот интересно методы интерфейса работают быстрее, чем переопределенные абстрактные методы? Ведь во втором случае должен быть какой-то поиск адреса метода.
А в C# нельзя сделать, чтобы метод мог вызваться даже у не созданного объекта? Есть интерфейс с методом Get и надо, чтобы он возвращал дефолтное значение, если объект не создан.

1. Думаю одинаково.
2. Можно через метод расширения.
PHP код:

public static class Extender
{
   public static 
int GetCount(this MyClassOrInterface obj)
   {
      if(
obj == null) return 0;
      return 
obj.Count;
   }



radiobutton 10.11.2012 17:47

Ответ: Вопросы от новичка
 
Сделал небольшую сцену типа на юнити. Все объекты у меня создаются через код. Кроме камеры и света. Так вот скомпилировал все ето дело в веб плеер, и при запуске тупо пуская сцена без всего. Хотя при компиляции в юнити все норм. Что может быть? (галочек никаких не ставил)

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

pax 10.11.2012 21:23

Ответ: Вопросы от новичка
 
В билд сеттингс выбирай свою сцену нулевой. Еще смотри логи.

radiobutton 10.11.2012 23:26

Ответ: Вопросы от новичка
 
мм
public static string levelDir = @"Assets\Data\Maps\";

StreamReader sr = new StreamReader(DirInfo.levelDir + level + @"\mapinfo.txt");

нельзя так чтоле делать ?)

Lestar 11.11.2012 00:48

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

public static string levelDir =Application.dataPath + @"\Data\Maps\";
StreamReader sr = new StreamReader(levelDir + level + @"\mapinfo.txt");


radiobutton 11.11.2012 03:25

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

Сообщение от Lestar (Сообщение 243206)
Код:

public static string levelDir =Application.dataPath + @"\Data\Maps\";
StreamReader sr = new StreamReader(levelDir + level + @"\mapinfo.txt");


При компиляции в редакторе работает.

Но при изготовлении билда нет. Ни веб плеера, ни под винду.

pax 11.11.2012 04:13

Ответ: Вопросы от новичка
 
Я тут как-то описывал способы работы с ресурсами... загляни в раздел Streaming Assets

radiobutton 11.11.2012 05:30

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

Сообщение от pax (Сообщение 243235)

Вообщем сделал, чтобы в билде под винду работало.
но в вебплеера не хочет работать.

Возможно потому что Application.dataPath в таком варианте выдает вначале адреса fail://localhost/...
Можно конечно удалять ето начало строки и возможно будит работать. Но тогда думаю не будит работать если залить куда нить в инет.

Походу через папку resources самый оптимальный вариант делать.:)

pax 11.11.2012 10:01

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

Сообщение от radiobutton (Сообщение 243238)
но в вебплеера не хочет работать.

Операции с файлами в вэб плеере запрещены, единственный вариант - грузить внешние файлы с помощью класса WWW (скачивать)

radiobutton 11.11.2012 13:45

Ответ: Вопросы от новичка
 
Всем спасибо за помощь. С ресурсами разобрася.

Теперь следующий вопрос.

1) Какие должны быть размеры и отношения сторон у текстур? Квадратные прямоугольные? Любые?

Хочу задать текстурные координаты для обычного куба. И вот думаю. Если скажем в первой строчке задать 3 первые грани, во второй 3 оставшиеся грани. То это будит самое удобное. Но тогда чтобы текстура ровно лежала, нужно чтобы текстура была прямоугольной и ее длина была кратна трем. Не уверен, что так можно.


2) Куда можно быстра залить скомпилированный веб плеер на юнити? xD

WISHMASTER35 11.11.2012 14:21

Ответ: Вопросы от новичка
 
radiobutton, размеры текстуры должны быть степенями двойки. Т.е. 512-512 или 64-1024.
На Dropbox или подобное облачко залить можно. Не в тему, но кто-то пользовался dropbox? Можно в облаке хранить файлы, а на своей машине их удалять? Эти сервисы предназначены больше для синхронизации файлов, но как файлообменник мне это не очень удобно.
И еще, как узнать какая папка в окне Project выбрана? В Selection ничего нету про папки.

Lestar 11.11.2012 16:04

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

Сообщение от WISHMASTER35 (Сообщение 243263)
И еще, как узнать какая папка в окне Project выбрана? В Selection ничего нету про папки.

Код:

var obj = Selection.objects;
 if(obj.Length==1)  Debug.Log(obj[0].name);


WISHMASTER35 11.11.2012 16:45

Ответ: Вопросы от новичка
 
Да, может там попасться объект DefaultAsset, но в коде такой класс не находится. Вообщем я не пойму как получить полный пусть к папке?

pax 11.11.2012 17:00

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

WISHMASTER35 11.11.2012 17:17

Ответ: Вопросы от новичка
 
pax, спасибо. Но хочется дальше пойти и сделать, чтобы после создания этот ассет был выделен и было активно редактирование имени.
AssetDatabase.CreateAsset не возвращает объекта, поэтому на ум приходит Selection.activeObject = Resources.LoadAssetAtPath, но это наверно глупо. И еще надо как-то активировать ввод имени.

pax 11.11.2012 20:50

Ответ: Вопросы от новичка
 
Не уверен что можно вызвать редактирование. я бы мог предложить попробовать выполнить итем из меню с помощью http://docs.unity3d.com/Documentatio...eMenuItem.html
Но не уверен что Rename будет работать...

pie 17.11.2012 19:26

Ответ: Вопросы от новичка
 
Как плавно повернуть объект до определенного угла? Поворачиваю так:
Код:

transform.RotateAround(transform.position, Vector3.left, Mathf.SmoothStep(0, 90, Time.deltaTime * 10));


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

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