Unity 3D Game Engine – JS – Camera – Swap Multi Cameras – On Click

1. Create in the Hierarchy

– CameraTarget1 (Empty object)
– CameraTarget2 (Empty object)

– Main Camera> attach ‘CameraControl.js’

CameraControl.js:


#pragma strict

// ########################################################################################
// This complete script can be attached to a camera to change his Position and his Target
// You will move the camera by clicking GUI.Button CAMERA 1 and GUI.Button CAMERA 2
// ########################################################################################

// The relative speed at which the camera will catch up
// Small value = more steps to reach the new position
public var smooth : float = 1.5f;  

// Camera positions START ##################################################################
public var newPosCam1 : Vector3;   // Camera Position 1 
public var newPosCam2 : Vector3;   // Camera Position 2 
// Camera positions END ####################################################################

// Camera targets START ####################################################################
// The target variable shows up as a property in the inspector. 
// Drag another object onto it to make the camera look at it.
var target1 : Transform; 
var target2 : Transform;
// Camera targets END ######################################################################

function Start () {

}


function Update() {
	
}

// NOTICE: function OnGUI is outside others functions
// Move the Camera START ###################################################################	
function OnGUI () {
    // Button color and opacity setup START ################################################
    // 0.0f rende il bottone completamente trasparente, il tocco funziona ugualmente
    GUI.color = new Color(1,1,1,0.5f); 
    // Button color and opacity setup END ##################################################
    
    // Insert 8 pixels of space between the 2 buttons.
	GUILayout.Space (8);

   if (GUI.Button (Rect (600,10,200,200), "CAMERA 1")) {
        transform.position = Vector3.Lerp(transform.position, newPosCam1, smooth * Time.deltaTime);
        transform.LookAt(target2);
    }
   if (GUI.Button (Rect (600,250,200,200), "CAMERA 2")) {
        transform.position = Vector3.Lerp(transform.position, newPosCam2, smooth * Time.deltaTime);
        transform.LookAt(target1);
    }
}
// Move the Camera END #####################################################################

Main Camera> CameraControl.js:

– var Smoot: Small value = more steps to reach the new position

– New Pos Cam 1: first position of camera
– New Pos Cam 2: second position of camera

– Target 1: target of first position -> DRAG AND DROP from Hierarchy to Inspector CameraTarget1 (Empty object)
– Target 2: target of second position -> DRAG AND DROP from Hierarchy to Inspector CameraTarget2 (Empty object)