How do I move a GUI Box Over Time?

Hey there,

I’ve been basically trying to figure our how to slide a gui box over a period of time on the screen.

Say I had a box with it’s rect (0,0,500,100) and After 2 seconds i wanted it to become rect(0,50,500,100). How would you do that over time? I assume you’d need to times by Time.Deltatime, but i can’t figure out how.

Can someone please provide a simple example for me to follow?

Many thanks.

enter code hereYou can just add up each delta time like so… (Written in C#)

float cumulativeTime = 0.0f; //Make sure this is a global
                             //variable (define it at the 
                             //start)

void OnGUI() {
    
    cumulativeTime += Time.deltaTime;
    
    if (cumulativeTime < 2) //The 2 seconds have not passed
        GUI.Box(new Rect(0, 0, 500, 100), "1st position");

    if (cumulativeTime >= 2) //The 2 seconds has passed
        GUI.Box(new Rect(0, 50, 500, 100), "2nd position");
        

}

Edit: I misread the question (I think). If you meant move slowly over time then do this: (C#)

float cumulativeTime = 0.0f;
float yPosition = 0.0f;

void OnGUI() {

cumulativeTime += Time.deltaTime;

if (cumulativeTime <= 2) {
yPosition = 25 * cumulativeTime; //Because the box is moving
                                 //at 50 pixels per 2 
                                 //seconds (or 25 pixels per
                                 //1 second)

GUI.Box(new Rect(0, yPosition, 500, 100));
}

if (cumulativeTime > 2) {
GUI.Box(new Rect(0, 50, 500, 100)); //Because chances are that cumulativeTime won't 
                                    //end up at exactly 2, it will probably go over
}

}

This will give you a nice result:

var x : int = 0;
var y : int = 0;
var w : int = 500;
var h : int = 100;

var speed : int = 100;

var startTime : int;
var guiBoxTime : int = 2;

function Start ()
{
   startTime = Time.time;
}

function OnGUI ()
{
   GUI.Box(Rect(x,y,w,h),"GUI Box");
}

function Update ()
{
   if (Time.time > startTime + guiBoxTime)
   {
      y += Time.deltaTime*speed;
	  if (y > 50)
	  {
		y = 50;
	  }
   }
}