T. Grumser
T. Grumser

Reputation: 139

Camera units in Unity5

i'm currently programming an 2D topview unity game. And i want to set the camera such as, that just a specific area is visible. That means that i know the size of my area and when the camera, which is following the player currently reaches the border of the area, i want to visible stops.

So here is my question: i know where the camera is and how it can follow the player but i dont know how i can calculate the distance between the border of the field and the border of waht the camera sees. how can i do that?

Upvotes: 0

Views: 46

Answers (1)

Blair
Blair

Reputation: 6693

Essentially, treat your playable area as a rectangle. Then, make a smaller rectangle within that rectangle that accounts for the camera's orthographic size. Don't forget to include the aspect ratio of your camera when calculating horizontal bounds.

Rect myArea;              // this stores the bounds of your playable area
Camera cam;               // this is your orthographic camera, probably Camera.main
GameObject playerObject;  // this is your player

float newX = Mathf.Clamp(
   playerObject.transform.position.x,
   myArea.xMin + cam.orthographicSize * cam.aspect,
   myArea.xMax - cam.orthographicSize * cam.aspect
);
float newY = Mathf.Clamp(
   playerObject.transform.position.y,
   myArea.yMin + cam.orthographicSize,
   myArea.yMax - cam.orthographicSize
);

cam.transform.position = new Vector3(newX,newY,cam.transform.position.z);

If you're using an alternative plane (say xz instead of xy), just swap out the corresponding dimensions in all the calculations.

Upvotes: 1

Related Questions