- Home /
Fade between group of object
I'm using this script to fade two groups of object. Script automatically pick all child of two object and fade between them. All object have material with alpha channel. Script working, but is not fluid. I'm a novice programmer. Can anyone tell me if I'm doing something wrong by accident? Thanks.
#pragma strict
var OBJFirst : GameObject;
var OBJSecond : GameObject;
private var OBJFirstArray : Component[];
private var OBJSecondArray : Component[];
var AlphaStartFirst : float = 0.0;
var AlphaStartSecond : float = 0.0;
var SingleTouch : boolean = true;
var DoubleTap : boolean = false;
var Swipe : boolean = false;
var AlphaHigh : float = 1.0;
var AlphaLow : float = 0.0;
private var alphaFirst : float ;
private var alphaSecond : float ;
var velocity : float = 1.0;
var TimeDelay : float = 0.0;
private var time : float;
private var var_Fade : boolean;
private var GoTouch : boolean = true;
function Awake () {
GetComp();
alphaFirst = AlphaStartFirst;
alphaSecond = AlphaStartSecond;
}
function Start () {
}
function Update () {
if (var_Fade){
fun_Fade();
}
}
function fun_Fade(){
if( alphaFirst > 0){
for (var child1 : Component in OBJFirstArray) {
child1.renderer.material.color.a = alphaFirst;
for (var child2 : Component in OBJSecondArray) {
child2.renderer.material.color.a = alphaSecond;
}
time = time + Time.deltaTime*1/velocity;
alphaFirst = Mathf.Lerp(AlphaHigh,AlphaLow,time);
alphaSecond = Mathf.Lerp(AlphaLow,AlphaHigh,time);
}
else if (alphaFirst == 0){
var_Fade = false;
OBJFirst.SetActiveRecursively(false);
Manager.GoTouch = true;
}
}
function GetComp(){
OBJFirstArray = OBJFirst.GetComponentsInChildren(Component);
OBJSecondArray = OBJSecond.GetComponentsInChildren(Component);
}
function On_TouchStart(gesture:Gesture){
if (Manager.GoTouch){
if (SingleTouch){
Manager.GoTouch = false;
alphaFirst = AlphaHigh;
alphaSecond = AlphaLow;
OBJSecond.SetActiveRecursively(true);
yield WaitForSeconds (TimeDelay);
var_Fade = true;
}
}
}
$$anonymous$$aybe you could explain what you mean by "not fluid." Is the fading changing in steps? Is it too sudden?
Anyways, you should probably rewrite this using a tweening library like iTween. It will make your code easier to read and maintain, and, who knows, it might solve your issue as well.
Yes, the fading changing in steps, subtle but annoying. I will try to do something with itween... Thanks.
Answer by DaveA · Sep 24, 2012 at 09:13 PM
I would change this:
private var OBJFirstArray : Component[];
OBJFirstArray = OBJFirst.GetComponentsInChildren(Component);
for (var child1 : Component in OBJFirstArray)
child1.renderer.material.color.a = alphaFirst;
to this:
private var OBJFirstArray : Renderer[];
OBJFirstArray = OBJFirst.GetComponentsInChildren(Renderer);
for (var child1 : Renderer in OBJFirstArray)
child1.material.color.a = alphaFirst;
Your answer
Follow this Question
Related Questions
Fade out the image when it touches certain object. 0 Answers
SteamVR Door handle .. Door, Hinge Joint not Circle Drive. 0 Answers
How to Make Part of Object Between Camera and Player Transparent 2 Answers
Do Child Objects Trigger Parent Objects? 1 Answer
How to move a group of objects with rigidbodies together? 2 Answers