昨日の時限タイマーゲージの続きです。点滅をくわえて演出してみました。
var bgImage : Texture2D;
var fgImage : Texture2D;
var cooldown = 1.0;
var timer:float = 15;
//オーラの点滅部品
var aura : Texture2D;
var alpha : float ;
static var flag = false;
function OnGUI () {
GUI.BeginGroup (Rect (10,Screen.height-32,218,29));
//フラグ時に点滅処理
if(flag == false){
GUI.color = Color(1,1,1,alpha);
}else{
GUI.color = Color(1,1,1,0);
}
GUI.DrawTexture (Rect (0,0,218,29), aura,ScaleMode.StretchToFill, true, 10.0f);
GUI.color = Color.white;
GUI.DrawTexture (Rect (4,4,210,21), bgImage,ScaleMode.StretchToFill, true, 10.0f);
GUI.BeginGroup (Rect (6,6,cooldown * 206, 17));
GUI.DrawTexture (Rect (0,0, 206, 17), fgImage,ScaleMode.StretchToFill, true, 10.0f);
GUI.EndGroup ();
GUI.EndGroup ();
GUI.enabled = flag;
if (GUI.Button (Rect (20,40,80,20), "Burst")) {
cooldown = 1;
}
}
function Update () {
//ここでオーラの点滅
alpha = Mathf.Sin(Time.time * 10.0);
if(cooldown > 0){
flag = false;
cooldown -= Time.deltaTime/timer;
}else{
flag = true;
}
}
sin波というもので点滅を滑らかにしてます。この部分はどこかの受け売りです。
しかし色を変える以外にも用途がたくさんあるようです。
GUI.DrawTextureで色を変えるのはGUI.colorで、guiTexture.colorとの違いは50%グレーが標準だったのに比べ
白が標準(?)ってところでしょうか。
GUI.BeginGroup内では一度設定するとすべてに適用されるっぽいので、やりたい部分を処理した後GUI.color = Color.white;で戻してやると通常通りに表示されます。
ゲームっぽい演出になってきました






