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 05.12.2011 13:50

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

Aikon 05.12.2011 14:06

Ответ: Вопросы от новичка
 
Спасибо, помогло :)

Aikon 05.12.2011 19:04

Ответ: Вопросы от новичка
 
Всплыли еще вопросы:
1. Можно программно как то передвинуть курсор, т.е. изменить Input.mousePosition? Поиск по форуму Unity3d привел только к решению с помощью WinAPI, что разумеется не очень.
2. Может кто привести код, как выбирать объекты из под курсора с помощью RayCast (я правильно понимаю, что надо использовать ScreenPointToRay)? Через OnMouseDown() криво работает, потому хочу по менять.

pax 05.12.2011 19:58

Ответ: Вопросы от новичка
 
1. Стандартными средствами - Нет
2. Например тут

Aikon 06.12.2011 16:07

Ответ: Вопросы от новичка
 
Спасибо.
1. Жаль :(
2. Воспользовался, работает. Примерно так же, как и OnMouseDown получилось. Видимо ошибка, где то в применении. На 3D сцене объекты, игрок ходит и нажимает на них, учитывая расстояние от от глаз игрока до пересечения с коллайдером. С разных мест объект по разному кликается. Видимо стоит поиграться с изменением расстояния.

Еще вопрос:
А можно как то колесо прокрутки отслеживать? Не в GUI, а в наследнике MonoBehaviour? В справке про скролл только по GUI нашел.

pax 06.12.2011 16:08

Ответ: Вопросы от новичка
 
Input.GetAxis ("Mouse ScrollWheel")

Aikon 08.12.2011 02:39

Ответ: Вопросы от новичка
 
И снова я тут :)

1. У меня на камеру накладывается пост-эффект, а хочется, чтобы на некоторые объекты его не было. Насколько я понимаю надо их рендерить во вторую камеру, а потом как то добавлять? Можно принцип действий расписать или кодом кинуть?
2. Есть ли в Unity возможность эмулировать жидкие и вязкие тела, напр. стекающую по стене слизь?
3. На GUIText нельзя наложить никакой эффект? (размазать буквы, добавить тень)
4. Можно как то передать параметры в следующую сцену, вызываемую через Application.LoadLevel, кроме как записать их в файл, а при старте прочитать? Наверно можно попробовать в каждой сцене создать Dummy, на который навесить скрипт, содержащий static переменные + set + get на них (или массив) и передавать все через него, но что-то мне кажется, что это не очень правильно.

Lestar 08.12.2011 03:42

Ответ: Вопросы от новичка
 
1.В с цене две камеры .Создаем слой IgnorePostEffect.Обьектам,которые рендеряться без постэффектов назначаем этот слой.Для камеры с постэффектами в настройках Culling Mask снимаем галку с нашего слоя,теперь она не видит эти обьекты,а для второй камеры в том же поле ставим флаг только напротив нашего слоя-она у нас будет рендерить теперь только эти обьекты.Дублируем трансформ с одной камеры на другую,парентим,профит.
2.Нет
3.Создать соответствующий стиль (с размазанными буквами и прочим)и применить
4.Создаем думик Main,на него вешаем скрипт в который пишем наши переменные,в скрипт добавляем
PHP код:

void Awake() 
{
  
DontDestroyOnLoad(gameObject);


При загрузке нового уровня думик не дестроится и соответственно сохраняются значения всех переменных.

pax 08.12.2011 07:07

Ответ: Вопросы от новичка
 
Добавлю:
3. Тень можно добавить вторым GUIText'ом. Вот на счет размыть не знаю. Стили тут не помогут, так как это не GUI
4. Если параметры - не объекты Unity (Текстуры, ГеймоОбжекты и т.д.) то статические переменные любого класса, не обязательно скрипта на каком-то объекте нормальный выход. Есть еще PlayerPrefs - данные сохраняются между запусками игры.

Aikon 08.12.2011 12:56

Ответ: Вопросы от новичка
 
Lestar, спасибо за подробный 1. Буду пробовать, должно получиться :)

pax, в очередной раз спасибо :)
PlayerPrefs то, что нужно. Заодно порешил вопрос с сохранением прогресса игрока (думал нужно будет класс писать).

3. Наверно попробую исхитриться и отрендерить в текстуру (с применением технологии п.1), а уже потом на нее эффект кидать.

Taugeshtu 08.12.2011 13:44

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

3. Наверно попробую исхитриться и отрендерить в текстуру (с применением технологии п.1), а уже потом на нее эффект кидать.
Проще будет рендерить в текстуру всё, что тебе надо размыть из гуя, камерой, которая содержит в себе пост-процесс блюра. Только рендерить придётся не через GUIText/GUITexture (их пост-процессинг не касается), а через квады в сцене. Но там математика нехитрая, ортогональная проекция и пошёл.
Хотя если так и делать, то уж проще вообще весь размывающийся гуй вынести в отдельный слой на эту вот камеру с размытием и отрендерить ей поверх главной камеры.
Надо будет только поэкспериментировать с тем, куда вставлять те элементы гуя, которые размывать не надо..

Aikon 08.12.2011 23:12

Ответ: Вопросы от новичка
 
Lestar, у меня главная камера с эффектами, вторая - без эффектов, обе повесил дочерними на Collider-игрока. Transform у обоих одинаков, так что с позиционированием проблем нет (думаю можно будет поиграться с позиционированием и сделать еще эффект :))
Добавил Layers - IgnoreMainCamera. Добавил кубик, у которого задал Layer = IgnoreMainCamera.
Для главной камеры в Culling Mask снял с IgnoreMainCamera (кубик в окошке предпросмотра пропал).
Для дочерней камеры в Culling Mask убрал все флаги, кроме IgnoreMainCamera (в окошке предпросмотра только кубик).
Однако, когда запускаю сцену - идет рендер только главной камеры, а вот кубика нет. Может надо еще и слой дочерней камеры задать?

Taugeshtu, я подумал, да мне это надо всего для двух экранов - стартового скина с названием игры и надписи - "Вы околели". Так что наверно ручками сделаю надписи, повешу их как текстуры на кубик в ортогональной проекции и забью.
Надо еще 3D Text попробовать.

Nuprahtor 08.12.2011 23:17

Ответ: Вопросы от новичка
 
У камеры также есть параметр глубины отрисовки Depth, попробуй поменять его для одной из камер
+Поиграться с ClearFlags

Aikon 08.12.2011 23:43

Ответ: Вопросы от новичка
 
У главной камеры было Depth = 1 (осталось от скрипта по смене суток), у дочерней 0. Поставил у дочерней Depth = 1.1 и ClearFlags = Depth Only - теперь кубик стал отрисовываться, но возникла другая проблема - кубик затирает объекты с главной камеры, которые стоят перед кубиком.

На самом деле, я использовал не кубик, а стол, на котором лежит книга. Стол рендерится второй камерой, а книга и остальное окружение - главной. Так вот при изменении глубины - книга перестает отрисовываться.

Насколько я понимаю Depth - это просто Z-буффер, т.е. когда мы выводим данные со второй камеры, то все точки лежат как бы сверху, поскольку у нее значение Depth больше.

pax 08.12.2011 23:51

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

Сообщение от Nuprahtor (Сообщение 213147)
+Поиграться с ClearFlags

Поставь Nothing для второй камеры
И проблема решиться ;)


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

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