forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Unity (http://forum.boolean.name/forumdisplay.php?f=144)
-   -   Фак по Юнити. (http://forum.boolean.name/showthread.php?t=12966)

Illidan 19.07.2010 22:21

Фак по Юнити.
 
Так как этот форум для Юнити свежий, предлагаю нубам усиленно эксплуатировать товарища Pax'а с целью получения легких знаний:p
итак, первые вопросы:
как можно измерить расстояние между GO(gameobject)? этакий аналог entitydistance();
как узнать положение GO в глобальных координатах? собственно его поворот и масштаб тоже.

П.С. Pax, ты же не против?

Nuprahtor 19.07.2010 22:22

Ответ: Фак по Юнити.
 
А вот на unity3d.ru есть хороший FAQ, там есть ответы на эти вопросы:), советую полистать этот форум
UPD
Цитата:

В.: Как измерить расстояние между двумя объектами?
О.: Vector3.Distance()

Illidan 19.07.2010 22:28

Ответ: Фак по Юнити.
 
Nuprahtor, но на этом форуме ведь нет?)) тема создана для наглого накопления базы знаний. за ответ спасибо

pax 19.07.2010 22:37

Ответ: Фак по Юнити.
 
1.
PHP код:

float distance Vector3.Distance(go1.transform.positiongo2.transform.position); 

2. transform.position, transform.rotation - всегда в глобальных координатах, чтобы узнать локальные координаты используются свойства transform.localPosition, transform.localRotation, transform.localScale

Illidan 19.07.2010 22:54

Ответ: Фак по Юнити.
 
как направить один GO на другой GO? аналог PointEntity на блицу.

Nuprahtor 19.07.2010 22:57

Ответ: Фак по Юнити.
 
Transform.LookAt()
PHP код:

function LookAt (target TransformworldUp Vector3 Vector3.up) : void 


pax 19.07.2010 23:14

Ответ: Фак по Юнити.
 
Так же можно использовать
PHP код:

Quaternion.LookRotation (forward Vector3upwards Vector3 Vector3.up) : Quaternion 

для поворота в по указанному направлению:
PHP код:

transform.rotation Quaternion.LookRotation(directionVector); 

где directionVector - Vector3 - определяющий направление

den 20.07.2010 13:53

Ответ: Фак по Юнити.
 
А у меня 4 вопроса по юнити:
1) Как получить процент, сколько игры загрузилось (хочу полоску загрузки сделать)
2) Можно ли в юнити пользоватся функциями, написаные в сторонней ДЛЛ. Если можно то как.
3) Как прицепить колёса к машине (я прицеплял пружинным джоинтом с ограничениями по осям)
4) Юнити как известно используе [Ф]изикс как встроеную физику. Но почему там нет мягких тел, магнитов, и имитации плавания тел?

Nuprahtor 20.07.2010 13:58

Ответ: Фак по Юнити.
 
Остальные вопросы хз, но имитацию плавания тел можно осуществить в юнити.
Здесь

pax 20.07.2010 14:13

Ответ: Фак по Юнити.
 
1. использовать асинхронные методы загрузки уровней
Application.LoadLevelAsync
Application.LoadLevelAdditiveAsync
Результатом будет объект класса AsyncOperation
который в составе имеет свойство progress
2. Если dll написана на C#, в проекте создается папка Plugins и в нее ложется эта библиотека, тоже самое и на DLL других языков, только декларирование в C# будет с использованием [DllImport] атрибута.
3. car-tutorial
4. В третьей юнити сделали поддержку тканей уже, больше нововведений в бервой бете в плане физики я особых не увидел. Остальные силы можешь применять самостоятельно ;)

Spiderman 20.07.2010 14:18

Ответ: Фак по Юнити.
 
Den, примерчик со строкой загрузки уровня должен быть в справке http://docs.unity3d.ru/Manual/index.html GetStreamProgressForLevel

http://docs.unity3d.ru/ScriptReferen...sForLevel.html

den 20.07.2010 14:21

Ответ: Фак по Юнити.
 
Цитата:

А если хочешь сделать машинку - скачай готовый примерчик примерно на 100Mb и карты тебе в руки http://unity3d.com/support/resources/tutorials/
Как бы я без тебя не догодался готовенькое скачать?:) Я сам хочу понять;)

pax 20.07.2010 14:27

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Den (Сообщение 155634)
Я сам хочу понять;)

Там три части урока в pdf 1)сборка, 2) настройка, 3) более подробно о коде, который управляет машиной

Чего не нравится то?

den 20.07.2010 14:29

Ответ: Фак по Юнити.
 
Цитата:

Там три части урока в pdf 1)сборка, 2) настройка, 3) более подробно о коде, который управляет машиной

Чего не нравится то?
А ну ладно, я не знал...
А остальные вопросы?

pax 20.07.2010 14:30

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Den (Сообщение 155637)
А ну ладно, я не знал...
А остальные вопросы?

См. выше ;)

den 20.07.2010 14:32

Ответ: Фак по Юнити.
 
Спасибо!
А насчёт третей версии, когда её можно будет скачать?

pax 20.07.2010 14:37

Ответ: Фак по Юнити.
 
Третью версию обещали выпустить этим летом.

Spiderman 20.07.2010 15:45

Ответ: Фак по Юнити.
 
Где можно почитать побольше литературы по "программированию" на javascript в Unity? Желательно на русском, но подойдет и английский

den 20.07.2010 15:51

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Spiderman (Сообщение 155649)
Где можно почитать побольше литературы по "программированию" на javascript в Unity? Желательно на русском, но подойдет и английский

В родной справки в разделе Scripting. Лично я там изучал;)

pax 20.07.2010 15:52

Ответ: Фак по Юнити.
 
А документация по Unity не подходит? она вся на JS ;)

Illidan 20.07.2010 16:14

Ответ: Фак по Юнити.
 
Spiderman, Еслиб я не был нубом, то посоветовал бы тебе, не терять времени на JS, а кодить сразу в ВижуалСтудии на C#. Ощущение такое, будто ведешь роскошный автомобиль))

den 20.07.2010 16:19

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Illidan (Сообщение 155654)
Spiderman, Еслиб я не был нубом, то посоветовал бы тебе, не терять времени на JS, а кодить сразу в ВижуалСтудии на C#. Ощущение такое, будто ведешь раскошный автомобиль))

Если в вижуал студио - то тогда лучше на С++, хотя кому как.
--------------------------------------
http://xakni.ucoz.ru/777.html
Вот "инфинити" (типа 2 зеркала друг перед другом стоят. Никогда не видели-так посмотрите!), ногами не пинать, сделал за 5 минут.:-D

Spiderman 20.07.2010 16:28

Ответ: Фак по Юнити.
 
Visual Studio у меня установлен, но так как я всего пару дней знакомлюсь с юнити рановато еще переходить, разобраться бы пока в GUI, а дальше может и перейду на Visual Studio

den 20.07.2010 16:37

Ответ: Фак по Юнити.
 
Цитата:

, разобраться бы пока в GUI,
В смасле GUI на юните?
В родной справке есть ЗАМЕЧАТЕЛЬНЫЙ тутор по GUI.
http://docs.unity3d.ru/Components/GU...g%20Guide.html

Illidan 20.07.2010 18:53

Ответ: Фак по Юнити.
 
продолжаем.
Как задать полную яркость для обьекта? экономичным способом. аналог EntityFX 1 на блицу

pax 20.07.2010 18:58

Ответ: Фак по Юнити.
 
Вообще я думал что для этого предназначены материалы серии Self-Illumin, но что-то у меня они как-то непонятно работают сейчас. Проще взять материал из серии LightMapped и вместо лайтмэпа дать белую текстуру например 2х2

Illidan 20.07.2010 19:21

Ответ: Фак по Юнити.
 
Мне кажется затратно так шейдерить. Если мешу не назначать материал то всеравно можно менять у него цвет через renderer.
Может, можно какнибудь включить повертексное освещение и поработать с ним?

pax 20.07.2010 19:25

Ответ: Фак по Юнити.
 
Проще написать свой шейдер, с выключенным освещением тогда.

Illidan 20.07.2010 19:28

Ответ: Фак по Юнити.
 
так можноли работать с повертексным освещением? гдето слышал что можно но не вижу где это.

Nuprahtor 20.07.2010 19:30

Ответ: Фак по Юнити.
 
Шейдер VertexLit
Также в настройках качества можно выставить Pixel Light Count 0, тогда попиксельное освещение вообще не будет использоваться

pax 20.07.2010 19:47

Ответ: Фак по Юнити.
 
http://www.unifycommunity.com/wiki/i...hp?title=Unlit
Похоже уже написали такой шейдер ))

den 20.07.2010 19:56

Ответ: Фак по Юнити.
 
А как сделать паузу в игре? (чтоб каждый объект недвигался и анимация не проигравалась)
Нужно прописывать в каждом объекте, или есть какая нибуть специальная функция?

pax 20.07.2010 20:00

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Den (Сообщение 155689)
А как сделать паузу в игре? (чтоб каждый объект недвигался и анимация не проигравалась)
Нужно прописывать в каждом объекте, или есть какая нибуть специальная функция?

Попробуй воспользоваться управлением скоростью времени:
http://unity3d.com/support/documenta...timeScale.html

den 20.07.2010 20:32

Ответ: Фак по Юнити.
 
Цитата:

Попробуй воспользоваться управлением скоростью времени
:cool: Прикольная функция! Не знал про неё

den 20.07.2010 20:34

Ответ: Фак по Юнити.
 
А как воспроизвести видео в игре?
И как сделать анимированную текстуру из этого видео?
(а то справку читал, чёто не получилось...)

pax 20.07.2010 20:39

Ответ: Фак по Юнити.
 
да просто в проект добавь видео, я не пробовал

Illidan 20.07.2010 21:20

Ответ: Фак по Юнити.
 
Юнити синфронизирует фпс с частотой кадров монитора? или фреймы обновляются с частотой, что мы видим в статистике?

den 20.07.2010 21:28

Ответ: Фак по Юнити.
 
Точно не знаю, но скорей всего фреймы.
А какая разница?

Illidan 20.07.2010 21:44

Ответ: Фак по Юнити.
 
кажется, по дефолту фпс не ограничивается.
ну... или 60 раз выполнится операция или 4000 раз
есть разница?)
еще вопрос:
функция transform.LookAt()
как сделать так, чтоб чтоб обьект поворачивался к цели плавно? можно ли ограничить поворот по осям? (игры с вектором ничего не дали(()

ПС.вот дурачек! способ с кватернионами же еще есть!

den 20.07.2010 21:53

Ответ: Фак по Юнити.
 
Цитата:

как сделать так, чтоб чтоб обьект поворачивался к цели плавно? можно ли ограничить поворот по осям? (игры с вектором ничего не дали(()
мне кажется только математикой;)
Цитата:

Сообщение от pax (Сообщение 151879)
Демо (точнее заготовка) одной из моих текущих задач.
http://shgames.ru/recorder.html
Жмем Record, потом много раз создаем кубики на кнопку Create Object, когда надоест останавливаем запись на ту же кнопку Record и жмем Play. Будет активный слайдер вверху, с которым можно поиграться ).

У меня тоже вопрос: рах, как ты это сделал:) (запись и воспроизведение)

.Squid 20.07.2010 22:03

Ответ: Фак по Юнити.
 
PAX встрял XD

pax 20.07.2010 23:17

Ответ: Фак по Юнити.
 
Вложений: 1
Цитата:

Сообщение от .Squid (Сообщение 155709)
PAX встрял XD

Хто встрял и куда?

Цитата:

Сообщение от Den
У меня тоже вопрос: рах, как ты это сделал:) (запись и воспроизведение)

Ну вобщем-то стояла задача - сделать. Вот и сделал.
Но на самом деле все просто: есть конвеер объектов, который знает как создать объект по идентификатору. Далее есть компонент, который при создании объекта имеет этот идентификатор и регистрируется в рекордере для записи. Каждый записываемый объект имеет так же компоненты, записывающие данные через промежутки времени. Создание и уничтожение объекта фиксируется. При воспроизведении по сохраненным идентификаторам воссоздаются объекты, а по записанным данным воссоздаются кривые анимации. При воспроизведении я поступил просто... чтобы не отключать физику - я применяю данные с кривых в LateUpdate().

Цитата:

Сообщение от Illidan (Сообщение 155699)
Юнити синфронизирует фпс с частотой кадров монитора? или фреймы обновляются с частотой, что мы видим в статистике?

Синхронизация настраивается для каждого режима качества и по умолчанию выклчена. См. скриншот.

den 20.07.2010 23:31

Ответ: Фак по Юнити.
 
Цитата:

Ну вобщем-то стояла задача - сделать. Вот и сделал.
Но на самом деле все просто: есть конвеер объектов, который знает как создать объект по идентификатору. Далее есть компонент, который при создании объекта имеет этот идентификатор и регистрируется в рекордере для записи. Каждый записываемый объект имеет так же компоненты, записывающие данные через промежутки времени. Создание и уничтожение объекта фиксируется. При воспроизведении по сохраненным идентификаторам воссоздаются объекты, а по записанным данным воссоздаются кривые анимации. При воспроизведении я поступил просто... чтобы не отключать физику - я применяю данные с кривых в LateUpdate().
:4to:
Нииичё не понял но всёравно спасибо!
Будем разбиратся

Fatalix3d 21.07.2010 07:38

Ответ: Фак по Юнити.
 
Был бы признателен если бы кто чуток о сети рассказал поподробней, просто два кубика управляемые клиентом.

pax 21.07.2010 10:04

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Fatalix3d (Сообщение 155761)
Был бы признателен если бы кто чуток о сети рассказал поподробней, просто два кубика управляемые клиентом.

Не касался этой темы еще, но впринципе должно быть все просто:
1. Сначала нужно создать сервер Network.InitializeServer(...);
2. Все клиенты подключаются с помощью Network.Connect(...);
3. У каждого сетевого игрока должен быть создан кубик с компонентом NetworkView, который будет передавать данные, в параметрах которого нужно указать переменной observed компонет, данные которого нужно передавать по сети (в нашем случае компонент с пометкой Transform)
4. Построить приложение и проверить.

Для игры через интернет существует так называемый мастерсервер, который регистрирует хотсы. Чтобы дать возможность обнаружить созданный сервер через интернет по идентификатору игры нужно после создания сервера его зарегистрировать MasterServer.RegisterHost(...), а на клиентах выполнить получение списка запущенных серверов MasterServer.RequestHostList(...)

Вроде бы должно хватить информации.

Nuprahtor 21.07.2010 11:18

Ответ: Фак по Юнити.
 
Hey guys, look at THIS!

Spiderman 21.07.2010 12:27

Ответ: Фак по Юнити.
 
А можно как-то разобрать префаб?
Посмотреть из чего он соткан, например, если подключаешь сторонний префаб и не совсем понятно что ты собственно добавил

den 21.07.2010 12:50

Ответ: Фак по Юнити.
 

так чтоли

Spiderman 21.07.2010 13:07

Ответ: Фак по Юнити.
 
Все равно не совсем понятно. Как мне, например, с нуля воссаздать префаб Level Attributes?



Там много разных компонентов используется, гизмос, rigidbody и boxcollider в Death Zone...

Nuprahtor 21.07.2010 13:12

Ответ: Фак по Юнити.
 
Создаем пустой объект, вешаем на него все компоненты, затем в специальную папочку создаем пустой префаб и перетягиваем объект с компонентами с Hierarchy в пустой префаб в Project

den 21.07.2010 15:05

Ответ: Фак по Юнити.
 
а как сделать камеру как в нормальных играх от третего лица:
чтоб когда камеру крутиш вокруг чело, и камера задевае стену, она не проходила сквозь неё и не останавливалась, а приближалась к челу?

pax 21.07.2010 15:06

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Den (Сообщение 155800)
так чтоли

Нафига выкладывать в сеть изображение в формате BMP? У некоторых GPRS!

pax 21.07.2010 15:10

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Den (Сообщение 155821)
а как сделать камеру как в нормальных играх от третего лица:
чтоб когда камеру крутиш вокруг чело, и камера задевае стену, она не проходила сквозь неё и не останавливалась, а приближалась к челу?

Делай рейкаст в сторону где камера, и если там встретишь препятствие - то ставь камеру ближе него.

den 21.07.2010 16:34

Ответ: Фак по Юнити.
 
Цитата:

Нафига выкладывать в сеть изображение в формате BMP? У некоторых GPRS!
странно, а я .jpq заливал...
-----------------------------------
Прдолжает тему "Фак по Юнити"
Следующий вопрос: можно ли модернизировать (изменять) стандартный ланшафт в юнити? (напимер чтоб воронку от взрыва сделать)

pax 21.07.2010 17:01

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Den (Сообщение 155838)
Прдолжает тему "Фак по Юнити"
Следующий вопрос: можно ли модернизировать (изменять) стандартный ланшафт в юнити? (напимер чтоб воронку от взрыва сделать)

Высоту вроде менять можно, текстуру фиг знает
TerrainData.SetHeights

Nuprahtor 21.07.2010 17:14

Ответ: Фак по Юнити.
 
Here

pax 21.07.2010 19:50

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от Nuprahtor (Сообщение 155848)

Интересно, что в справке пр alphamap и ее слои ничего не описано... не значет ли это, что что данные свойства могут измениться в будующей версии юнити?

pax 22.07.2010 00:15

Ответ: Фак по Юнити.
 
Вот первое чего не хватает в юнити - 2d системы частиц. Мне необходима возможность отрисовать частицы поверх 2d изображения. Но к сожалению не вижу вариантов кроме: отрисовать частицы в текстуру и отрисовать эту текстуру после всего 2d. Либо написать свою систему 2d частиц...

Есть у кого какие идеи по этому поводу? Может кто видел наработки?

Nuprahtor 22.07.2010 00:17

Ответ: Фак по Юнити.
 
То есть чтобы партиклы показывались поверх окон GUI?

pax 22.07.2010 00:19

Ответ: Фак по Юнити.
 
Чтобы партиклы рисовались поверх всего, что нарисовано в OnGUI()

ffinder 22.07.2010 21:45

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от pax (Сообщение 155889)
Чтобы партиклы рисовались поверх всего, что нарисовано в OnGUI()

можно попробовать сделать так:
есть такая штука как слои
делаем три камеры, расставляем им порядок отрисовки
1я рендерит мир как обычно
2я рендерит только GUI
3я рендерит только систему частиц
всё.

ffinder 22.07.2010 21:50

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от pax (Сообщение 155769)
3. У каждого сетевого игрока должен быть создан кубик с компонентом NetworkView, который будет передавать данные, в параметрах которого нужно указать переменной observed компонет, данные которого нужно передавать по сети (в нашем случае компонент с пометкой Transform)

прежде всего гуглим M2H Networking Tutorial
Network.Instantiate нужно использовать. Причем на сервере создаем объекты, а не на клиенте. А с клиента шлем только команды в виде RPC.
Короче в справке и туторе всё разжовано.

pax 22.07.2010 21:59

Ответ: Фак по Юнити.
 
Цитата:

Сообщение от ffinder (Сообщение 155961)
можно попробовать сделать так:
есть такая штука как слои
делаем три камеры, расставляем им порядок отрисовки
1я рендерит мир как обычно
2я рендерит только GUI
3я рендерит только систему частиц
всё.

Пробовал, не работает. Иначе не задал бы вопрос. Все что отрисовано в OnGUI всегда поверх.

Цитата:

Сообщение от ffinder
прежде всего гуглим M2H Networking Tutorial
Network.Instantiate нужно использовать. Причем на сервере создаем объекты, а не на клиенте. А с клиента шлем только команды в виде RPC.
Короче в справке и туторе всё разжовано.

Спасибо, ссылку на этот урок дал Nuprahtor несколькими постами выше.

den 22.07.2010 22:22

Ответ: Фак по Юнити.
 
Цитата:

Чтобы партиклы рисовались поверх всего, что нарисовано в OnGUI()
А зачем, если не секрет?:)


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

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