- Home /
Switching cameras when at a node.
I wrote this to be attached to the "terminal" that switches any two cameras assigned, (Camera 1 being the player camera and Camera2 being an overhead). it worked well until Unity 5 told me that ".active" is retired, and to use ".SetActive" instead.
var Camera1 : Camera;
var Camera2 : Camera;
var player: Transform;
var range: float=4f;
var myposition: Transform;
function Start () {
player = GameObject.FindWithTag("Player").transform; //target the player
Camera1.SetActive = (true);
Camera2.SetActive = (false);
}
function Update () {
var distance = Vector3.Distance(myposition.position, player.position);
if (distance<=range){
if (Input.GetKeyDown(KeyCode.C)) {
// toggle cameras
Camera1.SetActive = !Camera1.SetActive;
Camera2.SetActive = !Camera2.SetActive;
}
}
}
now it doesnt work at all, i was going to add a button option like a prompt, but i need to figure out this first. any help is appreciated.
Answer by supernat · Mar 23, 2015 at 08:08 PM
SetActive is not a flag. It is a method call. You pass true or false to it. You can use the activeSelf flag instead.
Camera1.gameObject.SetActive(!Camera1.activeSelf);
Camera2.gameObject.SetActive(!Camera2.activeSelf);
super thanks, i got it working fine now; is there any benefit to using this vs .enabled?
Setting the game object inactive will affect all child components, so if you have a script that runs on update for instance, it will stop running. Setting the camera's enabled state will only disable the camera. All other components on the game object will continue running. So it really depends on what you need. In many cases, I will use the enabled flag of a Renderer to stop rendering an object, but keep the attached scripts running.
Your answer
Follow this Question
Related Questions
character switching on collision 1 Answer
3rd Person to First Person Camera 0 Answers
How to switch between four characters when a button is pressed? 1 Answer
i need help with this camera switcher 3 Answers
Camera switch 0 Answers