Пишем C#
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class Interactor : MonoBehaviour
{
[SerializeField]
float radius;
// Update is called once per frame
void Update()
{
Shader.SetGlobalVector("_Position", transform.position);
Shader.SetGlobalFloat("_Radius", radius);
}
}
Потом этот скрипт надо перенести на объект, который будем двигать.
Где:
[SerializeField]
float radius;
Вносим значение radius в скрипт и на самом объекте по время Play можем менять значение и это значение будет передаваться в шейдер. Вместо radius можно написать что угодно, но соответственно и в шейдере надо напичать тоже самое.
Shader.SetGlobalVector("_Position", transform.position);
Эта строка будет передавать в шейдер ветора3 текущее полжение.
В шейдере, в любом который вы создадите, можно создать Material properties, но сделать надо их глобальными. Тогда объект в сцене на котором будет висеть скрипт будет передавать во все шейдера глобальные свойства.
Из данного скрипта мы имеем два свойства, те что в кавычках:
_Position
_Radius
Простите за сумбурность, я не программист на данный момент, но дизайнеры, меня надеюсь поймут :) .
Вот пример:
Комментариев нет:
Отправить комментарий