Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Unity. Как реализовать рендер объекта так, чтобы часть объекта левее другого была одной, а часть правее другой

Иван Епихин Ученик (224), на голосовании 2 месяца назад
Не знаю даже как грамотно сформулировать вопрос. В общем есть объект (платформа). Есть некий луч-линия, которая передвигается по своим определённым законам, иногда соприкасаясь с платформой.
Возможно ли как-то реализовать так, чтобы:
1) если вся платформа левее линии, то платформа становится одной определённой формы и определённой текстуры
2) если правее, то уже другая форма и другая текстура
3) если линия где-то соприкасается с платформой, то тогда платформа уже частично одна и частично другая, в зависимости от того, где именно эта линия находится

Примерно мог бы это сравнить как в фото редакторах некоторых есть ползунок до/после. Сдвинул его в один край - видишь картинку до редакции, сдвинул в другой - после. Ну а посередине
Голосование за лучший ответ
Pr0gr4m1st Профи (905) 3 месяца назад
Привет. Самый простой вариант - сделать два объекта с нужными текстурами и отрисовывать если справа/слева плоскости. Легче всего сделать с помощью shader graph, тк не нужно учить ShaderLab, но для этого нужен будет urp. Можешь использовать готовые шейдеры для этого, их полно. https://assetstore.unity.com/packages/vfx/shaders/urp-dissolve-2020-191256 . Там есть лишние параметры для твоей задачи, но, думаю, разберешься, их можно полностью выключить. Соответсвенно дальше просто меняешь плоскость сечения для обоих объектов в скрипте. Для этого нужно будет через рендерер материал получить, дальше его свойство менять. У материала есть функция SetVector(int nameID, Vector4 value). Вместо nameID можешь указать имя переменной, так будет проще. Вместо value Vector3 новой плоскости. Надеюсь, понятно объяснил.
Похожие вопросы