- Home /
Camera Movement Bounds?
Hello,
I have a simple camera movement script that moves on the X,Z axis (the camera is top down). I want to make the camera move within a bounds.
I first tried adding a physical collider around the border and on the camera, but the effect is kind of awful, meaning the camera just bounces off and rotates... It doesn't work basically.
I tried scripted a boundary too by doing this:
if(transform.position.z < 20){
transform.Translate(0, Input.GetAxis ("Vertical") * sensitivity, 0);
}
If the camera moves further than 20, it stops on the Vertical axis like it should, but then I can't move it back down because its out of the if statement.
Any ideas? I sure would appetite it.
Answer by Datael · Feb 13, 2012 at 08:53 AM
I'm a little confused that you're checking the z position of the transform but then translating along Y... Is this just a mistake when you re-typed it over here?
Anyway this should be what you're looking for. I'm assuming C#... Either way this should help you get the idea.
// define max position
float maxZ = 20.0f; // you could even make this serialized so you can change it from the inspector later
// figure out how much we are trying to move by
float wantMoveZ = Input.GetAxis ("Vertical") * sensitivity;
// make sure we're not going too far
float moveZ = Mathf.Min(maxZ - transform.position.z, wantMoveZ);
// finally apply the movement (if there is any)
if (moveZ != 0) {
transform.Translate(0, 0, moveZ);
}
There's more easy ways to do this but I was hoping to keep it a little optimized...
This will keep the movement pinned at a max of 20. If there is no movement in Z then it will not translate the transform, etc, if for some reason it manages to go past 20 it will be reset to 20 (thanks to the min) etc etc
Your answer
![](https://koobas.hobune.stream/wayback/20220613064024im_/https://answers.unity.com/themes/thub/images/avi.jpg)