2016-08-23 2 views
2

Как я могу описать игровой объект? (для демонстрации выбора игрока). Допустим, у меня 5 гоблинов, и я хочу выделить только ту, которая пересекается с курсором.Материалы, шейдеры и очерчивание объекта в Unity3d

Мои знания материалов и шейдеров очень слаб, так, может быть, я не правильно понимаю, но ...

... большинство ответов я видел, используют что-то вроде контурной затенении.

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

Нет ли лучшего способа?

+0

Если вы ищете быстрое решение, в Asset Store есть (заплаченные) активы, которые делают такие вещи: https://www.assetstore.unity3d.com/о/#!/содержание/41508. (Не совсем моя рекомендация, если это для хобби/образовательных целей, так как в этом случае намного лучше, если вы сначала попытались закодировать решение для себя.) – Serlite

ответ

0

Я могу дать вам мой код. Я использовал этот код для выделения объектов в комнате, которые выбраны и используются Raycasting. Можно выделить только один объект, если выбрать другой, старый будет убрано ... Не обращайте внимания на комментарии, они на немецком языке: D

HighlightCode

Highlight Children

Если вы хотите использовать схему -shader, вот хороший: Outlined Diffuse

+0

У меня есть несколько вопросов: 1) Есть ли вариант этого шейдера, который работает с новым единством 5 стандартных шейдеров? 2) Что делать, если объект, который я хочу выделить, состоит из нескольких меньших объектов? (например, тело + оружие). Разве это не повредит контур? 3) Какой цвет вы меняете при подсветке? Это цвет альбедо? – Zedd

+0

Давайте поговорим о моем highlightCode, потому что я просто использовал Shaders, и я - noob в этой теме. Я обновил свой код и ссылку, которые я использовал в своем ответе. ** 2) ** Я использовал свой highlightCode для выделения объекта с множеством других объектов в качестве дочерних элементов. Вам просто нужно ввести детей и изменить материал. ** 3) ** Требуется текущий цвет вашего объекта и просто добавьте значение: 'new Color (oldColor.r + highlightFactor, oldColor.g + highlightFactor, oldColor.b + highlightFactor, oldColor.a); ' ** 1) ** Я думаю, что есть много уроков, как использовать шейдеры – Perazim

+0

Я также очень новичок в шейдерах и материалах, поэтому я не понимаю одну вещь? Цвет, который вы меняете - это цвет основного материала (альбедо)? Многие модели, которые я использую, принадлежат магазину активов, и у них есть базовый цвет материала белого цвета, поэтому, я думаю, мне придется немного их омрачить. – Zedd

Смежные вопросы