En este momento estás viendo Cambie el tamaño de la cámara para que se ajuste a un GameObject en Unity/C#

 – Unity

Cambie el tamaño de la cámara para que se ajuste a un GameObject en Unity/C# – Unity

Cambie el tamaño de la cámara para que se ajuste a un GameObject en Unity/C#

– UnityAssets3Free

hola , por aqui jorge y en esta ocasion os traigo
nueva pregunta

di que tengo uno GameObject dentro de una escena 2D y una cámara. Y quiero cambiar el tamaño y la posición de la cámara para que, incluso cuando cambie la resolución de la pantalla, el objeto siga siendo visible. Entonces, ¿cómo puedo hacer esto?

1 respuesta 1

TL; DR: desplácese hacia abajo hasta la parte inferior del código.

Primero, debemos establecer la posición de la cámara en el medio del objeto para que el escalado de la cámara sea más fácil.

Segundo, para escalar la cámara, cambiemos el orthographicSize cámara en nuestra hoja de ruta (¿Cuál es la Size atributo en Camera componente). Pero, ¿cómo calculamos el atributo?

Básicamente, el Size atributo aquí es half the height of the camera. Así, por ejemplo, si definimos el Size por 5eso significa que la altura de la cámara será de 10 Unity Unit (which is something I made up so you can understand easier).

Entonces parece que solo tenemos que tomar la altura del objeto, dividirlo por 2 y establecer el Size de la cámara al resultado, ¿no? (1)

Bueno en realidad no. Verá, aunque podría funcionar en ciertos casos, cuando el ancho del objeto es mucho, mucho más grande que la pantalla, y la altura es mucho, mucho más pequeña, entonces la cámara no podría ver todo el objeto.

¿Pero por qué? Ahora, digamos que nuestra cámara tiene un ancho/alto de 16/9 y nuestro objeto es 100/18. Esto significa que si escalamos usando la altura, el ancho/alto de nuestra cámara sería 32/18, y si bien es suficiente para cubrir la altura, no es suficiente para cubrir el ancho. Entonces, otro enfoque es calcular usando el ancho

Tomando el ancho del objeto, divídalo por el ancho de la cámara y luego multiplíquelo por la altura de la cámara (luego, por supuesto, divida por 2). Podríamos ajustar todo el ancho del objeto. (Debido a… la proporción o algo así) (dos)

PERO DE NUEVO, tiene el mismo problema que nuestro primer enfoque, pero el objeto es demasiado alto en lugar de demasiado ancho.

Entonces, para resolver esto, solo verifique si el primer enfoque (see (1)) si el objeto se está desbordando y si es así, usaremos el segundo enfoque (see (2)). Y es eso

Y aquí está el código por cierto:

// replace the `cam` variable with your camera.

float w = <the_width_of_object>;
float h = <the_height_of_object>;
float x = w * 0.5f - 0.5f;
float y = h * 0.5f - 0.5f;

cam.transform.position = new Vector3(x, y, -10f);

cam.orthographicSize = ((w > h * cam.aspect) ? (float)w / (float)cam.pixelWidth * cam.pixelHeight : h) / 2;

// to add padding, just plus the result of the `orthographicSize` calculation with number, like this: 
//                              | |
//                              V V
// ... cam.pixelHeight : h) / 2 + 1

nota: si aun no se resuelve tu pregunta por favor dejar un comentario y pronto lo podremos de nuevo , muchas gracias

por hoy,hasta la proxima

Deja una respuesta