How to fix box drop via code animation?

I’m currently making a box puzzle game and so far I’ve used Time.deltaTime with player position to make box move.

But here I want the box to fall into the gap but instead of dropping in smoothly, the box snaps into the final position while being push animated.

Here’s the code for the drop:

void OnTriggerStay(Collider Other)
	{
		if (Other.CompareTag("TEMP_COL")) {
			Other.enabled = false;
			Vector3 BoxStart = BoxHeight.position;
			Vector3 BoxDestination = BoxHeight.position + Other.transform.up * -1.8f;
			
			float DropTime = 0.0f;

			while (DropTime < MoveSpeed) {
			Vector3 FinalBox = Vector3.Lerp (BoxStart, BoxDestination, DropTime / MoveSpeed);

				BoxHeight.position = FinalBox;
				DropTime += Time.deltaTime;
			}
		}
}

The TEMP_COL is an invisible collider that prevents the player from passing through unless a box have dropped into it.

Am I not using the correct code to animate the drop? Or is it wrong to use OnTriggerStay?

Animated GIF sample

Try this:

        if (value < 1f)
        {
              value +=  speed * Time.deltaTIme; // value is class field of float type
              box.transform.position = Vector3.Lerp (BoxStart, BoxDestination, value);
        }

I think you should make 2 phase for that, first for move the box to the drop position and then move the box down to the final destination.
Current case will move the box to the final position (box will move through the ground).

In the end I use IEnumerator for dropping the box and disable the TEMP_COL. Here’s the IEnumberator code for dropping the box once the box collides with TEMP_COL:

IEnumerator DropBox(Vector3 BoxStart, Vector3 BoxDestination, float MoveSpeed){
		float DropTime = 0.0f;

			GetComponent<BoxCollider> ().enabled = false;

		while (DropTime < MoveSpeed) {
			Vector3 FinalBox = Vector3.Lerp (BoxStart, BoxDestination, DropTime / MoveSpeed);

			BoxHeight.position = FinalBox;
			DropTime += Time.deltaTime;
			// stop execution for one frame
			yield return new WaitForEndOfFrame();
		}
	}

First it disables the temporary collider, allowing the player to go through/over the dropped box. As for the dropping I use the same deltaTime code but have it in an IEnumerator which solves the issue where the box drop smoothly instead of snapping straight into position.