Add Delay to Moving Platform

Hi, i have a script to move my platform like a ping pong. I have know idea on how to add a delay before this happens and a delay before the platform switches.

basically i want a delay for when it starts and when the platform returns.

my setup

using System.Collections;

public class MovingPlatform : MonoBehaviour {

	public Transform DestinationSpot;
	public Transform OriginSpot;
	public float Speed;
	public bool Switch = false;
	
	void FixedUpdate()
	{
		// For these 2 if statements, it's checking the position of the platform.
		// If it's at the destination spot, it sets Switch to true.
		if(transform.position == DestinationSpot.position)
		{
			Switch = true;
		}
		if(transform.position == OriginSpot.position)
		{
			Switch = false;
		}
		
		// If Switch becomes true, it tells the platform to move to its Origin.
		if(Switch)
		{
			transform.position = uhu(transform.position, OriginSpot.position, Speed);
		}
		else
		{
			// If Switch is false, it tells the platform to move to the destination.
			transform.position = Vector3.MoveTowards(transform.position, DestinationSpot.position, Speed);
		}
	}
}

thanks

Nick

Well, since you’ve coded in such a way as to tell you when the platform is at the desired position, it’s simply a case of creating a Coroutine to pause for the desired amount of time before initiating the return of the platform. You could also do this with a simple timer, but for now let’s just stick to the Coroutine and WaitForSeconds idea.

first add a Coroutine to your script like so:

IEnumerator Wait()
{
    //Stop the platform from moving here.

    //wait for the desired amount of seconds (float);
    yield return new WaitForSeconds(TIME_TO_WAIT);

}

Once you have that added it’s a simple case of calling it like so:

StartCoroutine("Wait");