- Home /
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");
//gets the shader
function Update () {
// Animate the blend value
var blend1 : float = Mathf.Sin (Time.Time, 1.0);
renderer.material.SetFloat( "_Blend", blend1 );
}
Answer by Owen-Reynolds · Jan 08, 2013 at 05:14 PM
Just a basic programing error -- nothing to do with shaders, but the shader part is confusing you about the non-shader part.
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.
Apparently i can't give you a thumbs up... not sure why!
i'd worked it out myself too, that i just needed (Time.time), and then do anything else afterward. but the writeup is appreciated! thanks!
Your answer
![](https://koobas.hobune.stream/wayback/20220613090607im_/https://answers.unity.com/themes/thub/images/avi.jpg)