- Home /
Question by
cgpendergrass · Nov 29, 2012 at 04:58 AM ·
functionloadlevelfade3d textonmouseenter
How to make 3D text fade with OnMouseEnter?
I have 3D text for my start menu buttons. I want the text to fade between red and black when the mouse rolls over it, and I want it to go back to black when the mouse goes off of it. The fade on the script I have only works with function Update, but I don't want it to fade all the time, only with OnMouseEnter. How can I make that happen? The script I have is posted below...
//attached to start menu buttons
var LevelSelected : String;
var Quit : boolean = false;
var colorStart : Color = Color.black;
var colorEnd : Color = Color.red;
var colorBlack : Color = Color.black;
var duration : float = 1.0;
function OnMouseUp () {
if(Quit){
Application.Quit();
}
else
{
Application.LoadLevel(LevelSelected);
}
}
function OnMouseEnter (){
var lerp : float = Mathf.PingPong (Time.time, duration) / duration;
renderer.material.color = Color.Lerp (colorStart, colorEnd, lerp);}
function OnMouseExit (){
var lerp : float = Mathf.PingPong (Time.time, duration) / duration;
renderer.material.color = Color.Lerp (colorStart, colorBlack, lerp);}
Comment
Format code when you post it, otherwise it's pretty much unreadable.
Best Answer
Answer by Griffo · Nov 29, 2012 at 11:26 AM
Try this ..
#pragma strict
var startColor : Color = Color.black;
var endColor : Color = Color.red;
var duration: float = 2;
private var t: float = 1;
private var fadein : boolean;
private var fadeout : boolean;
function Start(){
renderer.material.color = Color.black;
}
function Update() {
}
function OnMouseEnter(){
fadein = true;
fadeout = false;
fadeIn();
}
function OnMouseExit(){
fadeout = true;
fadein = false;
fadeOut();
}
function fadeIn(){
while(t > 0 && fadein){
//print(t + " Fade in" + " Fade out");
renderer.material.color = Color.Lerp(endColor, startColor, t);
t -= Time.deltaTime/duration;
yield;
}
fadein =false;
}
function fadeOut(){
while(t < 1 && fadeout){
//print(t + " Fade out");
renderer.material.color = Color.Lerp(endColor, startColor, t);
t += Time.deltaTime/duration;
yield;
}
fadeout = false;
}