- Home /
change water color through script when an action occurs
is there anyway to create a script that can change the color of water when an action happens IE a bomb blowing up thank you.
Answer by rutter · Mar 21, 2012 at 09:29 PM
You probably want `Material.color` or `Material.SetColor()`. If you're new to those, "How do I change a material color?" is a pretty common question.
Is that what you're wanting help with? Or were you more concerned with that bomb bit?
no i got the bomb down good i just wanted to know how to change the water color when the bomb goes off
edit==ok so i tried both of them and neither worked :(...im using the night time water that comes with unity pro
Answer by LeMoine · May 26, 2013 at 01:50 AM
Hello,
you can access the 'horizon color', which is actually the water color, via script using the shader like this:
Considering 'water' has the reference to the GameObject Water,
to get the color, do:
water.renderer.material.GetColor("_horizonColor");
to change the color, do:
water.renderer.material.SetColor("_horizonColor", theNewColor);
if you want the color to gradually change from one to another, use the Lerp method like this, script :
using UnityEngine;
using System.Collections;
public class WaterLerp : MonoBehaviour {
public float smooth = 2;
private Color newWaterColor;
private GameObject water;
void Start () {
water = GameObject.FindWithTag("Water");
newWaterColor = water.renderer.material.GetColor("_horizonColor");
}
void Update () {
ColorChanging();
}
void ColorChanging(){
Color waterColorBlack = new Color(0.0f,0.0f,0.0f,1.0f);
Color waterColorGrey = new Color(0.145f,0.165f,0.18f,1.0f);
if(/*Something happens*/){
newWaterColor = waterColorBlack;
}
if(/*Something else happens*/){
newWaterColor = waterColorGrey;
}
water.renderer.material.SetColor("_horizonColor", Color.Lerp(water.renderer.material.GetColor("_horizonColor"), newWaterColor, Time.deltaTime * smooth));
}
}
It works fine,
Unity rules,
LeMoine
Your answer
Follow this Question
Related Questions
Unity,How to make training Target Enemy 1 Answer
oescape script name? 1 Answer
Convert this line of javascript to C# (easy) 1 Answer
Have a 'Torch' script toggle on and off 1 Answer
Is it the same javascript 1 Answer