Move the camera only until a certain position

https://scontent.fmgf1-2.fna.fbcdn.net/v/t34.0-12/15870843_1543174992374352_1359602831_n.gif?oh=dc048c9e04617007c5e82379fd5a9c1a&oe=586CC623

Can you see the blue area in this gif? I want block the camera when the player go more to left, to not see the blue area. This is the code that I’m using to move the camera:

using UnityEngine;
using System.Collections;

public class configuracoesDaCamera : MonoBehaviour {

    Vector3 hit_position = Vector3.zero;
    Vector3 current_position = Vector3.zero;
    Vector3 camera_position = Vector3.zero;
    float z = 0.0f;
    public static bool bDedoNoHud;

    void Update()
    {
        if (Input.GetMouseButtonDown(0))
        {
            hit_position = Input.mousePosition;
            camera_position = transform.position;

        }
        if (Input.GetMouseButton(0))
        {
            current_position = Input.mousePosition;
            LeftMouseDrag();
        }
        Debug.Log("bDedoNoHud" + bDedoNoHud);
    }

    void LeftMouseDrag()
    {
        if (!bDedoNoHud)
        {
            // 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;
        }           
    }
}

2 Answers

2

assuming your map is 500x500… just set the camera Max and min positions if it goes past wherever is too far for your taste.

if( camera.position.x > 475 )
camera.position.x = 475;

if(camera.position.y >475)
camera.position.y = 475;

it’s not that easy, but thats the idea.
(Hint, you can’t change transform.pos.x/y/z directly.)
so say camera.position = new Vector3( max_X, curr_Y, curr_Z) for example…

@salex100m has a great answer. You may also want to look into Mathf.Clamp