Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Utilizar varias camaras

Iniciado por Alvaro95, Marzo 01, 2018, 02:15:02 PM

Tema anterior - Siguiente tema
Marzo 01, 2018, 02:15:02 PM Ultima modificación: Marzo 01, 2018, 05:06:23 PM por pioj
Buenas a todos, en una escena he instalado varias cámaras pero no encuentro ningún script que me funcione para cambiar entre ellas al presionar una tecla.
 
Es decir, al pulsar una tecla que pase de una cámara a otra.
 
¿Alguien sabe algún modo?
 
Este es el script que utilizo, pero solo puedo cambiar entre dos cámaras, al añadir mas, ya me da error:
 

var cam1 : Camera;
var cam2 : Camera;
function Start() {
 //activo y desactivo las camaras necesarias
    cam1.enabled = true;
    cam2.enabled = false;
}
function Update() {
    if (Input.GetKeyDown(KeyCode.C)) {
     //al presionar la tecla c se activa la camara desactivada y se desactiva la otra camara
        cam1.enabled = !cam1.enabled;
        cam2.enabled = !cam2.enabled;
    }
}

 
 

Hola una forma que se me ocurre es poblar un contenedor con Componentes "Camera", por ej una lista, (pero podría ser un array o diccionario ...)
 
El contenedor lo podés poblar con un FindObjectsOfType, aca lo dejé público, si lo dejás así arrastra cada cámara a la lista en el inspector.
 
Está así nomás y en C#, fijate si tiene o no errores
 

public List<Camera> lista = new List<Camera>();
public int camaraActiva = 0;   //la primera de la lista
 
void Start()
{
for(int i = 0 ; i < lista.Count ; i++)
       lista.enabled = i == camaraActiva;
}
void ActivarCamara(int camara)
{   
if(camara >= lista.Count || camara < 0)
       return;
   
    lista[camaraActiva].enabled = false;
    camaraActiva = camara;
    lista[camaraActiva].enabled = true;
}
 
void Update()
{
if(....)
       if(....)
           if(....)
             ActivarCamara(LaCamaraDeseada);
}

 
 
 
El titanic de JS se está hundiendo mal, está en vos si querés ser el capitán del barco o si querés ser Rose , por eso andate a C# antes de que sea tarde.
 
Saludos
 
 

Hola, gracias por tu respuesta pero me da error, ademas uso unity 4 para esta escena en especifico.

Cita de: Alvaro95 date=1519916139Hola, gracias por tu respuesta pero me da error, ademas uso unity 4 para esta escena en especifico.
   


Unity 4? por alguna razón en particular? no te aseguro que las cosas mantengan igual sintaxis, hay muchisimo, pero muchisimo que cambió sobretodo en la API, hay cosas que antes eran válidas qeu ahora no, o que quedaron obsoletas.
 
Donde te da error? no me digas que en el  "if(....)" porque me tiro de puente más cercano  . Igual nunca copies y pegues tal cual, la idea del código que te pasan es la de entenderlo y aplicarlo, y si no sabés de que trata, tampoco lo copies, preguntá mas vale.
 
Otra cosa muy importante ,siempre que pongas "me da error" ampliá por favor con todo lo necesario, mensajes, errores de consola, suposiciones, lenguaje que estás usando (obviamente supongo que no pusiste esto en un JS), mientras más des mejor, ... poner solo "gracias pero me da error" es tan pero tan molesto y casi suena insultante, aunque probablemente no fuera tu intención es la impresión que generalmente da este tipo de situaciones. Por eso para futuros posteos tené en cuenta esto.
 
Saludos
 
 

Me da error en List, en la primera linea
 
 
 
De todos modos soy un poco nob, asi que ten paciencia conmigo jaja

 

Cita de: Alvaro95 date=1519928237Me da error en List, en la primera linea

       
   


Otra vez el "Me da error"... para mi eso es ruido blanco ... consola y código entero

Si no lo consigues igual lo que puedes hacer es en vez de cambiar de cámara, cambia las propiedades de la que te funciona , es decir, la posición, tamaño,... 

Marzo 01, 2018, 10:02:17 PM #7 Ultima modificación: Marzo 01, 2018, 10:26:04 PM por Adrianete
Cita de: Alvaro95 date=1519910102Buenas a todos, en una escena he instalado varias cámaras pero no encuentro ningún script que me funcione para cambiar entre ellas al presionar una tecla.
   
   
      Es decir, al pulsar una tecla que pase de una cámara a otra.
   
   
      ¿Alguien sabe algún modo?
   
   
      Este es el script que utilizo, pero solo puedo cambiar entre dos cámaras, al añadir mas, ya me da error:
   
   

var cam1 : Camera;
var cam2 : Camera;
function Start() {
 //activo y desactivo las camaras necesarias
    cam1.enabled = true;
    cam2.enabled = false;
}
function Update() {
    if (Input.GetKeyDown(KeyCode.C)) {
     //al presionar la tecla c se activa la camara desactivada y se desactiva la otra camara
        cam1.enabled = !cam1.enabled;
        cam2.enabled = !cam2.enabled;
    }
}

   
       
   


iba a sugerirte un script de intecalar luces, pero no te vale para tu problema
 
a lo mejor con un array? cada camara con un valor y que al pulsar la tecla le aññada +1 y al llegar al ultimo valor resetee la variable.
 
o con los case,
 
la verdad no me hagas mucho caso, hasta que pruebes lo demas

He estado pensando en tu problema y me ha venido a la mente que si estas usando el script de fpc c# la camara que le incorporas al script luego no te deja desactivarla, puede que ese sea fallo que te tira.

Marzo 04, 2018, 01:47:05 AM #9 Ultima modificación: Marzo 04, 2018, 01:47:16 AM por Alvaro95
Gracias por vuestras respuestas, al final lo he creado en C#, he cogido un poco de vuestras preguntas y a la vez he mirado por varios sitios de Internet y al final lo he conseguido, simplemente he ampliado un poco el script añadiendo mas camaras.

Etiquetas: