- Home /
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.
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
I am not trying to do something like add a constraint on a rigid body.
I am trying to allow all movement but prevent the object's Z coordinate from increasing.
Answer by jenci1990 · Dec 01, 2014 at 08:41 PM
You make a new variable "lastPositionZ" every frame. Put this line(13) to the top of script:
var lastPositionZ : float;
and that's all.
Your answer
Follow this Question
Related Questions
How to prevent movement in a specific direction only? -1 Answers
Enemy AI Movement one axis at a time (8 directional - 2.5d) towards player/target 2 Answers
Changing the direction of an object using another object. 0 Answers
Cannot stop character movement upon trigger 2 Answers
Why does my character only dash forward and not in the moving direction? 1 Answer