title: Unity - Limit Camera Movement XY axis
body: <p>I have the following code which works really well for scrolling map using the draggable mouse. I am trying to define limits so that I cannot scroll too far in either the x or y co-ordinates. I've seen various examples of code, such as: 
      "transform.position.x = Mathf.Clamp(-100, 100);" though have not been able to incorporate it into the code. I am a bit of a beginner to all this and have just done a 2D tutorial animating zombies and have a camera that can scroll, but would like to add limits to how far it can scroll in any given directions.</p>
  
  <p>Thanks heaps</p>
  
  <p>Adam</p>
  
  <pre class="lang-cs prettyprint-override"><code>using UnityEngine;
  using System.Collections;
  
  public class ViewDrag : MonoBehaviour {
      Vector3 hit_position = Vector3.zero;
      Vector3 current_position = Vector3.zero;
      Vector3 camera_position = Vector3.zero;
      float z = 0.0f;
  
      // Use this for initialization
      void Start () {
  
      }
  
      void Update(){
          if(Input.GetMouseButtonDown(0)){
              hit_position = Input.mousePosition;
              camera_position = transform.position;
  
          }
          if(Input.GetMouseButton(0)){
              current_position = Input.mousePosition;
              LeftMouseDrag();        
          }
      }
  
      void LeftMouseDrag(){
          // From the Unity3D docs: "The z position is in world units from the camera."  In my case I'm using the y-axis as height
          // with my camera facing back down the y-axis.  You can ignore this when the camera is orthograhic.
          current_position.z = hit_position.z = camera_position.y;
  
          // Get direction of movement.  (Note: Don't normalize, the magnitude of change is going to be Vector3.Distance(current_position-hit_position)
          // anyways.  
          Vector3 direction = Camera.main.ScreenToWorldPoint(current_position) - Camera.main.ScreenToWorldPoint(hit_position);
  
          // Invert direction to that terrain appears to move with the mouse.
          direction = direction * -1;
  
          Vector3 position = camera_position + direction;
  
          transform.position = position;
      }
  }
  </code></pre>