# Trying to change a range within a shader over time, using a script.

Hi guys,

I’m trying to change a range slider within a shader using a script, it needs to go from 0 - 1 and back again, over a period of time set by me. i’m aware that this would be a sin curve of time multiplied by my own variable.

But i’m stuck trying to get the script working, it throws an error back at me that i just don’t understand. the error is:
BCE0017: The best overload for the method ‘UnityEngine.Mathf.Sin(float)’ is not compatible with the argument list ‘System.Object, float)’.

This is probably something really simple that i’m missing due to lack of sleep, but i could really use a fresh set of eyes on this!

thanks guys!

the script:

``````        renderer.material.shader = Shader.Find("my_Shader");

function Update () {
// Animate the blend value
var blend1 : float = Mathf.Sin (Time.Time, 1.0);
renderer.material.SetFloat( "_Blend", blend1 );
}
``````

Where it says `Mathf.Sin(float)` it’s telling you that sin takes one input. If you try it on your calculator, sure enough, you punch in 45, then Sin, and you get 0.707. One input.
It so happens that the value of Sin is always -1 to 1. If you want it to be from 0 to 1, you have to fix it afterwards. Suppose you wanted to compute x squared, but at most 10. You can’t write `(x*x,<10)`. You’d probably use `res=x*x; if(res>10) ...`
The standard way to adjust Sin to a 0-1 is: `Mathf.Sin(Time.time*speed)*0.5+0.5;`. Speed is just any constant. It’s tricky, since Sin takes the angle in radians, which cycle every 6.28 . So speed=1/PI makes it go 0 to 1 in one second.