Стрелка на земле.

Общие вопросы о Unity3D

Стрелка на земле.

Сообщение Swirly 03 янв 2010, 09:47

Есть персонаж стоящий на плоскости, идущий в указанную точку при клике мышкой на плоскость. Вопрос : какие есть способы сделать стрелку, от персонажа к точке назначения ? Я сделал просто два квада помещенные чуть выше плоскости. Всё работает, но !
1) На определенном расстоянии от камеры начинаются глюки, как они там...z-файтинг или альфа-туннелинг, не знаю как называется, в общем стрелка сливается с плоскостью.
2) Если я возьму не плоскость а холмистый террайн, то такой способ уже никуда не будет годиться, соответственно как быть чтобы стрелка точно повторяла рельеф местности без дикого количества полигонов ?

Ну и
3) В идеале надо иметь возможность тянуть стрелку за любую точку и искривлять её.
Swirly
UNец
 
Сообщения: 19
Зарегистрирован: 19 дек 2009, 10:59

Re: Стрелка на земле.

Сообщение Paul Siberdt 03 янв 2010, 12:53

Простое решение:
- Назначаем стрелке новый Layer, например UI ( этот layer создаем сами в инспекторе )
- Копируем в сцене текущую камеру, снимаем с копии все скрипты, если были и парентим ее опять к текущей.
- В настройках текущей камеры отключаем из рендера слой UI (параметр Culling Mask), а в настройках ее копии - отключаем все, кроме UI

В результате, стрелка будет рендериться только камерой-копией.

Теперь надо поднять Depth камеры-копии выше основной камеры и отключить у нее заливку фона (Параметр Clear Flags = Depth Only)

В решении есть ограничения, но, возможно, они в Вашем проекте будут несущественны.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Стрелка на земле.

Сообщение Swirly 03 янв 2010, 13:34

OK, принцип понятен, значит создавать слои для каждого типа объектов. Действительно простое решение, для начала пригодится, но все же хотелось бы именно чтобы стрелка могла повторять рельеф террайна.
Кстати, если я буду создавать много камер каждую на свой слой, в каких случаях это будет серьезно сказываться на производительности ?
Swirly
UNец
 
Сообщения: 19
Зарегистрирован: 19 дек 2009, 10:59

Re: Стрелка на земле.

Сообщение Leorn 03 янв 2010, 15:43

Ну вообще теоретически можно считать координату и закрепить ее за сынсой(стрелкой)
Leorn
UNец
 
Сообщения: 30
Зарегистрирован: 02 янв 2010, 22:50

Re: Стрелка на земле.

Сообщение Paul Siberdt 03 янв 2010, 16:22

Если допустить, что слой UI отвечает за HUD, то есть, визуализацию игрового интерфейса, то вместе со стрелкой этому слою можно назначить и прогрессбары, прицелы, иконки, надписи и прочую полезную информацию со всех игровых объектов.

Отдельная камера на HUD - по-моему, очень верное решение.

Касаемо же стрелки... если она длинная и должна искривляться согласно рельефу террейна, можно попробовать различные способы (способы в голове висят, как они на практике работать будут - не знаю :-s ) :
- проецировать стрелку, как маску источника света ( projection light вообще не тестил в Юне)
- создать стрелку, как skinned mesh и гнуть скелет стрелки по рельефу
- представить стрелку, как набор отдельных фрагментов (пунктир) и рисовать путь, размещая каждый фрагмент на выбранном для него месте
- строить стрелку процедурно, вручную размещая ее вертексы по тому же принципу, что и размещение костей, отдельных фрагментов и прочего, но с большим гемором :)
- создавать путь и пускать по нему партиклы в трейле (как путь создавать - ни малейшего понятия... мож можно просто скольжением ригида по статике рельефа )

Что бы делал сам?... проверил возможность создания стрелки, как projection light и, если ничего б не вышло - создал бы пунктирную стрелку.

Число камер, похоже, на производительности не сказывается окромя того, что каждая камера считается в свой рендер таргет... а рендертаргеты на железе - дело совсем не страшное по сравнению с теми же постэффектами.
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт

Re: Стрелка на земле.

Сообщение Swirly 05 янв 2010, 21:29

В принципе конечно вариант с прожектором самый незамороченный, но с ним, как я понял, можно проводить весьма ограниченный список операций. Ни поскейлить неуниформно, ни взаимодействие какое с проекцией учинить. Текстуру не искривишь ведь, верно ?

Отдельная камера на HUD - по-моему, очень верное решение.

Я может чего-то не улавливаю, но разве функция OnGUI и объекты GUItexture не рисуются поверх всего по дефолту ?

В общем выходит так что какой-то путь все равно надо строить. Кривую безье, да чтобы по террайну ложилась, и чтоб её еще дергать можно было...придется просить помощи у Настоящих Программистов, больно круто для меня.
Swirly
UNец
 
Сообщения: 19
Зарегистрирован: 19 дек 2009, 10:59

Re: Стрелка на земле.

Сообщение Paul Siberdt 06 янв 2010, 02:03

ИМХО, GUI - довольно примитивна, если рассматривать ее в качестве игрового HUD. Гуйка отлично справляется со своей задачей - создание UI приложения. Конечно, можно допустить, что HUD шутеров не так далеко шагнул от фонов и кнопок и вполне реализуем на основе GUI.
Соглашусь, в стратегиях, симах, настольных играх, паззлах и много еще где GUI справится с большим интерфейсным пластом.
Но что, если юниту нужен прогрессбар в виде дуги, который, к тому же, меняет свою кривизну в зависимости азимута камеры? Вот... у меня с интерфейсом всегда такие заморочки :) Поэтому задачи по HUDу решать предпочитаю в куче с остальными и теми же методами.

Ко всему прочему, GUI ну очень плохо дружит с iPhone, для меня это уже важно :D
Аватара пользователя
Paul Siberdt
Адепт
 
Сообщения: 5317
Зарегистрирован: 20 июн 2009, 21:24
Откуда: Moscow, Russia
Skype: siberdt
  • Сайт


Вернуться в Общие вопросы

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

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