Noticias

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

Limitar camara

Iniciado por Alvaro95, Diciembre 19, 2018, 10:07:26 PM

Tema anterior - Siguiente tema
Buenas a todos.
 
 
 
Me interearia saber algun metodo para limitar las camaras.
 
En mi caso tengo una fly cam o free cam, en la que el jugador puede moverse por todo el mapa sin ningin limite, sin embargo me gustaria poner unos limites, es decir, que llegue un punto del mapa en el que el jugador no pueda continuar, como un collider, y que choque y no pueda seguir avanzando.
 
 
 
Gracias y saludos comunidad!

Cita de: Alvaro95 date=1545253646Buenas a todos.
   
   
       
   
   
      Me interearia saber algun metodo para limitar las camaras.
   
   
      En mi caso tengo una fly cam o free cam, en la que el jugador puede moverse por todo el mapa sin ningin limite, sin embargo me gustaria poner unos limites, es decir, que llegue un punto del mapa en el que el jugador no pueda continuar, como un collider, y que choque y no pueda seguir avanzando.
   
   
       
   
   
      Gracias y saludos comunidad!
   


Eso se hace generalmente con raycasting (o variantes), en una freecam es muy pero muy fácil de hacer:
 


  1.    antes de moverte calculas el delta de posición requerido a mover la cámara (todavía no la movés!)


  2.    disparás un raycast (o cualquier variante boxcast, spherecast) desde la cámara en la dir de movimiento deseada una cantidad igual al delta de posición


  3.    Si no colisiona con nada la cámara va en la pos deseada.


  4.    Si colisiona con algo la cámara va en la posición del punto de colisión (el RaycastHit point), un caso muy usado es darle un pequeño espacio entre el punto de contacto y la posición de la cámara, por ej sumandolé un "valor". Acordate que transform.position de la cámara corresponde a la posición verdadera, pero tenés un valor de nearPlane que suele ser muy pequeño, podés compensar el efecto restando este valor al movimiento total.


Con todo esto lo que hacés es clasificar mediante las capas o Layers qué colisiona con qué, tendrás colliders en los que el raycast no interactua (fijate la matriz de colisiones o las layermask) es decir en este caso atravesás muros y lo que sea. Y tendrás colliders que sí interactuan. Por ej podés usar la layer default (solo de prueba no me gusta usar esta Layer) para los objetos que no interactuan y crearte una que se llame, no se, "Limit" y acá ponés los colliders que hacen de límites. En el script del raycast asegurate que la función raycast toma de argumento un LayerMask, fijate en la doc hay buenos ejemplos de esto.
 
Saludos


Etiquetas: