Camera re-target

Hi, everyone

Is there a script that
when I click a certain object, the object should become new target of camera each time i click.

i am using this code for camera.

//WASD to orbit, left Ctrl/Alt to zoom
using UnityEngine;
using System.Collections;

[AddComponentMenu("Camera-Control/Keyboard Orbit")]

public class Guikeys : MonoBehaviour {
    public Transform target;
    public float distance = 20.0f;
    public float zoomSpd = 2.0f;

    public float xSpeed = 240.0f;
    public float ySpeed = 123.0f;

    public int yMinLimit = -723;
    public int yMaxLimit = 877;

    private float x = 0.0f;
    private float y = 0.0f;
	
	private float GUIHorizontal = 0;
	private float GUIVertical = 0;
	
	public Texture uptexture;
	public Texture lefttexture;
	public Texture righttexture;
	public Texture downtexture;
	
    public void Start () {
        Vector3 angles = transform.eulerAngles;
        x = angles.y;
        y = angles.x;

        // Make the rigid body not change rotation
        if (rigidbody)
            rigidbody.freezeRotation = true;
    }

	
	
void OnGUI()
{
    if(Event.current.type == EventType.Repaint)
    {
        GUIHorizontal = 0;
        GUIVertical = 0;
    }
    GUILayout.BeginVertical();
    if(GUI.RepeatButton(new Rect(70,600,30,30), uptexture))
    {
        GUIVertical = 1;
    }
    GUILayout.BeginHorizontal();
    if(GUI.RepeatButton(new Rect(35, 630, 30, 30), lefttexture))
    {
        GUIHorizontal = -1;
    }
    if(GUI.RepeatButton(new Rect(103, 630, 30, 30), righttexture))
    {
        GUIHorizontal = 1;
    }
    GUILayout.EndHorizontal();
    if(GUI.RepeatButton(new Rect(70, 658, 30, 30), downtexture))
    {
        GUIVertical = -1;
    }
    GUILayout.EndVertical();
}


    public void LateUpdate () {
        if (target) {
			
			
			x -= Input.GetAxis("Horizontal") * xSpeed * 0.02f;
			y += Input.GetAxis("Vertical") * ySpeed * 0.02f;
			
			
            x -= GUIHorizontal * xSpeed * 0.02f;
            y += GUIVertical * ySpeed * 0.02f;
            
            y = ClampAngle(y, yMinLimit, yMaxLimit);
            
        distance -= Input.GetAxis("Fire1") *zoomSpd* 0.02f;
            distance += Input.GetAxis("Fire2") *zoomSpd* 0.02f;
            
            Quaternion rotation = Quaternion.Euler(y, x, 0.0f);
            Vector3 position = rotation * new Vector3(0.0f, 0.0f, -distance) + target.position;
            
            transform.rotation = rotation;
            transform.position = position;
        }
    }

    public static float ClampAngle (float angle, float min, float max) {
        if (angle < -360.0f)
            angle += 360.0f;
        if (angle > 360.0f)
            angle -= 360.0f;
        return Mathf.Clamp (angle, min, max);
		
	
    }
}

Thanx

I’m a bit new to Unity but i think I know a solution. (Sorry if it’s not good)

You should make the ‘target’ variable static in the orbit script, then put a script on the objects that are clickable:

function OnMouseDown () { 

 //Supposed your orbit script's name is MouseOrbit.js or MouseOrbit.cs  
 MouseOrbit.target = transform.transform;

}

try:

static public Transform target;

(or without the public tag, but i suppose you should leave that there)

‘static var target’ is javascript