Intentionally Delay FPS Controller Movement

Hey guys, I was wondering if anyone knew a way to intentionally delay, or cause some lag, on my FPS Controller movement. whether it be in the forms of a script or changing the settings on my FPS Controller. Long story short, I want the user to input a movement command but have it take a second before the controller responds and actually moves in game. I understand this is a bit taboo when making a game since a lot of effort is put into eliminating or minimizing lag, but for my project and the research I am trying to conduct, it is necessary.

Thanks!

@Cherno is wright, try this:

    public float Delay = 1;

    protected void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            StartCoroutine(DelayExecution());
        }
    }

    protected IEnumerator DelayExecution()
    {
        yield return new WaitForSeconds(Delay);
        // Execute your delayed action
    }

Are you trying to simulate inertia? Where the player resists going from one state to another, basically taking long before actually moving?

If so, I would recommend using 2 variables for speed.

Have a maxSpeed and a currentSpeed. maxSpeed being the main speed for moving or running. currentSpeed would start at 0 and when you start moving, getting input to move, you increase the currentSpeed from 0 until it gets to maxSpeed and use the currentSpeed as the movement modifier.

You can use a coroutine to increase the currentSpeed by 0.5 or something every few milliseconds. This will let the player start moving, but slowly and then the speed will increase to the maxSpeed. Basically simulating inertia.