Stop object movement in 1 direction along axis

I am working on making part of a puzzle. I want the player to only be able to walk down a hallway when facing backwards.

  1. There is a hallway
  2. There is a collider set as a trigger to detect when player is in hallway
  3. On the player I have a script that detects Y rotation
  4. When the player is in the hallway and is facing forwards they should not be able to move up the Z axis only down

I have everything working properly, I just don’t know how to stop the object from moving up the Z axis but allow it to move down.

var inHall : boolean = false;
var canWalk : boolean = false;
var yRotation : float;

function Start () 
{

}

function Update () 
{
	var currentPositionZ = this.transform.position.z;
	var lastPositionZ : float;
	yRotation = this.gameObject.transform.rotation.eulerAngles.y;
	
	if(inHall)
	{
		if(this.gameObject.transform.rotation.eulerAngles.y <= 240 && this.gameObject.transform.rotation.eulerAngles.y >= 120)
		{
			canWalk = true;
		}
		else
		{
			canWalk = false;
		}
	}
	else
	{
		canWalk = false;
	}
	
	if(!canWalk)
	{
		if(currentPositionZ >= lastPositionZ)
		{
			currentPositionZ = lastPositionZ;
		}
	}
	
	
	lastPositionZ = currentPositionZ;
}

function OnTriggerStay (col : Collider)
{
	if(col.tag == "Hall")
	{
		inHall = true;
	}
}
function OnTriggerExit (col : Collider)
{
	if(col.tag == "Hall")
	{
		inHall = false;
	}
}

This is the full code.

The problem area is:

var currentPositionZ = this.transform.position.z;
var lastPositionZ : float;

if(!canWalk)
{
	if(currentPositionZ >= lastPositionZ)
	{
		currentPositionZ = lastPositionZ;
	}
}
	
	
lastPositionZ = currentPositionZ;

This method of returning the Z coordinate to its previous value if it moves up does not work.
I need help because i dont know how to do this.
Thank you

You make a new variable “lastPositionZ” every frame.
Put this line(13) to the top of script:

var lastPositionZ : float;

and that’s all.