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.
- There is a hallway
- There is a collider set as a trigger to detect when player is in hallway
- On the player I have a script that detects Y rotation
- 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