- Home /
Fading Between 2 Materials?
Hi,
We need to fade between 2 materials based on collisions.
We have started with just a timed script to do so but it's not working properly. It should just switch between the 2 materials based on the time.
How would we go about doing this and how would it be based off collisions with layers? Would this be possible with using the Unity's terrain.
// Blends between two materials
var material1 : Material;
var material2 : Material;
var duration = 2.0;
function Start () {
// At start, use the first material
renderer.material = material1;
}
function Update () {
// ping-pong between the materials over the duration
var lerp : float = Mathf.PingPong (Time.time, duration) / duration;
renderer.material.Lerp (material1, material2, lerp);
}
Answer by swisscoder · Feb 16, 2012 at 02:15 AM
Actually your code is EXACTLY the same as the example for Material.Lerp from the resources (http://unity3d.com/support/documentation/ScriptReference/Material.Lerp.html)
To get the fading to work, as you probably expect it. Follow this: http://forum.unity3d.com/threads/8936-can-t-get-material.lerp()-to-work
And to do this based on collisions, implement the functions OnCollisionEnter() and OnCollisionExit(), if I remember right.
actually it's OnTriggerEnter() and OnTriggerExit(). But that did aldonaleto already answer you in another very similar question you asked.
Well, there is one thing. I'm fairly certain that $$anonymous$$aterial.Lerp doesn't work as you'd expect with textures. It only interpolates float data, and obviously needs them both to have the same shader to make any sense. I'd have a look at shaders that can fade between two different textures.
Thanks for the response.
Yes, I tried the above and it doesn't work. Having 2 of the same textures defeats the purpose of switching between 2 textures.
As for shaders, I'm not too familiar with the coding, but I'm sure we can figure it out.
How can I control blending based off collisions if it's a shader? And by collisions I mean world particle collider, not sure if that's possible.
Your answer
Follow this Question
Related Questions
Fresnel shader and mixed textures 0 Answers
Problem with collisions: Player and Terrain 0 Answers
Tree 'Fade Length' Not Working as Expected... 1 Answer
Removing Texture at Runtime Without replacing it 1 Answer
Make a simple tree 1 Answer