unity-game-engine

How can I simply toggle between Cameras if I press a certain key?


Okay so I have 2 cameras set up in my hierarchy in Unity:

enter image description here

I'd like to know, When in-game, how can I toggle between both cameras when a certain key is pressed? I'm aware I'd maybe need to make a script for this, just not sure how I'd go about doing it.


Solution

  • You can add multiple cameras

      using UnityEngine;
    
    using System.Collections;
    
    public class CameraController : MonoBehaviour {
    
    // Use this for initialization
    public Camera[] cameras;
    private int currentCameraIndex;
    
    // Use this for initialization
    void Start () {
        currentCameraIndex = 0;
    
        //Turn all cameras off, except the first default one
        for (int i=1; i<cameras.Length; i++) 
        {
            cameras[i].gameObject.SetActive(false);
        }
    
        //If any cameras were added to the controller, enable the first one
        if (cameras.Length>0)
        {
            cameras [0].gameObject.SetActive (true);
            Debug.Log ("Camera with name: " + cameras [0].GetComponent<Camera>().name + ", is now enabled");
        }
    }
    
    // Update is called once per frame
    void Update () {
        //If the c button is pressed, switch to the next camera
        //Set the camera at the current index to inactive, and set the next one in the array to active
        //When we reach the end of the camera array, move back to the beginning or the array.
    
    
    }
    
    public void Change()
    {
            currentCameraIndex ++;
            Debug.Log ("C button has been pressed. Switching to the next camera");
            if (currentCameraIndex < cameras.Length)
            {
                cameras[currentCameraIndex-1].gameObject.SetActive(false);
                cameras[currentCameraIndex].gameObject.SetActive(true);
                Debug.Log ("Camera with name: " + cameras [currentCameraIndex].GetComponent<Camera>().name + ", is now enabled");
            }
            else
            {
                cameras[currentCameraIndex-1].gameObject.SetActive(false);
                currentCameraIndex = 0;
                cameras[currentCameraIndex].gameObject.SetActive(true);
                Debug.Log ("Camera with name: " + cameras [currentCameraIndex].GetComponent<Camera>().name + ", is now enabled");
            }
        }
    

    }