- Home /
Smooth changing transparency of particle/additive shader
Im trying to smooth change transparency of an object with particle/additive shader.I`ve wrote a code that works on transform.localScale.
renderer.material.color.a = Vector3.MoveTowards(renderer.material.color.a,max,Time.deltaTime * speed);
Have these three errors:
1.error CS1502: The best overloaded method match for UnityEngine.Vector3.MoveTowards(UnityEngine.Vector3, UnityEngine.Vector3, float)' has some invalid arguments 2.error CS1503: Argument
#1' cannot convert float' expression to type
UnityEngine.Vector3'
3.error CS1612: Cannot modify a value type return value of `UnityEngine.Material.color'. Consider storing the value in a temporary variable
Answer by $$anonymous$$ · Aug 15, 2013 at 01:43 PM
Figured by using Time.deltaTime.
changeColor = renderer.material.GetColor("_TintColor");
if(increase == false)
{
changeColor.a -= Time.deltaTime*2;
if(changeColor.a <= 0)
increase = true;
}
if(increase == true)
{
changeColor.a += Time.deltaTime*2;
if(changeColor.a >= 0.5)
increase = false;
}
renderer.material.SetColor("_TintColor", changeColor);
Answer by dorpeleg · Aug 15, 2013 at 01:08 PM
Error 1&2: make sure all of the vars you enter at MoveTowards are floats.
Error 3: you can't modify a single part of the color, just like you can't modify a single part of transform.
You need to do something like:
renderer.material.color = new Color(renderer.material.color.r,renderer.material.color.g,renderer.material.color.b,[your alpah changes here]);
So basically, you can't use Vector3.MoveTowards if you only want to cnage the alpah.