50. CLASE CAMERA (I)
Bienvenid@s a otra de las clases importantes de Unity. La clase cámera le permite al jugador interactuar con tu juego. La cámara en Unity es un dispositivo a través del cual el jugador ve el mundo.
Hemos de diferenciar desde el primer momento, y ahí residen no pocas confusiones de los recién llegados a Unity, entre pantalla y cámara. Ambas son cosas diferentes y tienen una unidad de medida distinta:
La unidad de medida de la pantalla está definida en píxeles. La esquina izquierda-inferior de la pantalla es (0,0), la derecha-superior está contenida en las variables (pixelWidth,pixelHeight), que representan la anchura y altura de la pantalla respectivamente. La posición Z estaría en unidades globales contadas desde la cámara.
Si la unidad de medida es relativa a la cámara, la esquina izquierda-inferior de la cámara es (0,0) y la derecha-superior (1,1). La posición Z estaría en unidades globales desde la cámara.
Con esto en mente, empecemos:
VARIABLES:
fieldOfView:
var fieldOfView : float
Variable que contiene el campo de visión de la cámara en grados. Se referiría al campo de visión vertical, ya que el horizontal varía dependiendo del viewport’s aspect ratio. El campo de visión es ignorado cuando la cámara está en modo ortográfico.
Antes de empezar con los ejemplos, vamos a retocar un par de cosillas en la interfaz de Unity. En primer lugar, en Proyecto le damos al botón derecho del ratón sobre la carpeta Gizmos=>Delete, para deshacernos de la bombilla. Nos aseguramos de que el cubo está en posición -2,0,0. Eliminamos el script vinculado al cubo. Nos aseguramos de que la cámara no esté en modo ortográfico, sino en perspectiva. Doble click en MiPrimer Script:
Camera.main.fieldOfView = 20;
Arrastramos el script a PortaScripts en la Jerarquía. Notemos antes que nada que en el script nos estamos refiriendo a la cámara principal. Si quisiéramos que el script afectara a otra cámara distinta, por un lado deberíamos quitarle el "main" del script y por otro lo tendríamos que arrastrar a la cámara que queremos afectar por éste. Vamos a probarlo, para que no haya dudas, pero antes dadle al play y comprobar cómo el campo de visión, que por defecto es 60, pasa a ser 20 y -aunque parezca al principio poco intuitivo- al tener un ángulo menor de visión, dicho campo reducido es ampliado para que ocupe toda la pantalla. Esto a muchos les recordará las fotos en las bodas: cuanta más gente queremos abarcar (más campo de visión) más lejos tenemos que tirar la foto.
Pero habíamos prometido que aplicaríamos el ejemplo a una cámara no principal, así que ahí vamos. Gameobject=>Create other=>Camera. Llamamos a la Camera "Camara 2". Ahora la ubicaremos en la siguiente posición/rotación:
Posicion:-0.6,15,1
Rotacion:85,0,0
Con la cámara 2 seleccionada, le damos al play y observamos nuestro pequeño mundo desde otra perspectiva. Nos daremos cuenta de que Unity nos lanza un mensaje, avisándonos de que tenemos dos receptores (listeners) de audio en la escena. Esto es porque por defecto cada cámara tiene un Audio Listener para recoger el sonido además de la imagen. Para evitar problemas, eliminamos el AudioListener de la cámara 2 en el inspector.
Vale, y ahora montemos otro miniscript para la segunda cámara. Hacemos doble click en MiSegundoScript (ya que el primero lo tenemos ocupado) y tecleamos:
camera.fieldOfView = 20;
Arrastramos este script a la Camara 2 (si lo arrastráramos al PortaScripts no funcionaría, ya que no sabría a qué cámara ha de afectar, salvo que creáramos una variable "expuesta" de tipo Camera a la que arrastrar esta y etc, etc, aunque para lo que queremos hacer es más cómodo el método primero)
Le damos al play y observaremos que funciona.
Aprovecho para comentaros una cosilla que seguro que la mayoría ya sabe. Cada cámara al ser creada tiene una variable (depth, que luego veremos) que establece la prioridad de cada una. Cuanto más alto el valor de depth, más prioridad tiene la cámara. Si os fijáis en el inspector, la cámara principal debería tener la variable depth en -1, y camara 2 en 0. Es por ello que cuando le damos al play, la vista que nos aparece es la que recoge la cámara 2. Si quisiéramos retomar a vista grabada por la cámara principal, no tendríamos más que darle un valor a depth superior al del resto de cámaras.
Con la tecnología de Blogger.
BUSCADOR
PÁSATE POR EL FORO
API DE UNITY
TEMAS
- 00_INTRODUCCION (3)
- 01_CLASE OBJECT (3)
- 02_ESTRUCTURA VECTOR3 (4)
- 03_CLASE TRANSFORM (7)
- 04_CLASE RIGIDBODY (8)
- 05_CLASE COLLIDER (2)
- 06_CLASE MESHCOLLIDER (1)
- 07_CLASE CHARACTERCONTROLLER (3)
- 08_CLASE RENDERER (2)
- 09_CLASE MESHFILTER (1)
- 10_CLASE JOINT (2)
- 11_CLASE HINGEJOINT (2)
- 12_CLASE SPRINGJOINT (1)
- 13_CLASE CHARACTERJOINT (1)
- 14_CLASE BEHAVIOUR (1)
- 15_CLASE MONOBEHAVIOUR (9)
- 16_CLASE CAMERA (6)
- 17_CLASE LIGHT (3)
- 18_CLASE MATERIAL (3)
- 19_CLASE CUBEMAP (1)
- 20_CLASE RENDERTEXTURE (3)
- 21_CLASE PARTICLEEMITTER (3)
- 22_CLASE MESH (2)
- 23_CLASE GAMEOBJECT (6)
- 24_CLASE SHADER (1)
- 25_CLASE PHYSICMATERIAL (1)
- 26_CLASE COMPONENT (1)
- 27_CLASE GUIELEMENT (1)
- 28_CLASE GUITEXT (2)
- 29_CLASE GUITEXTURE (1)
- 30_CLASE GUI (8)
- 31_CLASE GUILAYOUT (4)
- 32_CLASE TEXTURE (1)
- 33_CLASE TEXTURE2D (2)
- 34_CLASE INPUT (4)
- 35_ESTRUCTURA BOUNDS (1)
- 36_CLASE COLLISION (1)
- 37_CLASE CONTROLLERCOLLIDERHIT (1)
- 38_CLASE DEBUG (1)
- 39_CLASE EVENT (3)
- 40_CLASE GIZMOS (1)
- 41_CLASE LIGHTMAPSETTINGS (1)
- 42_ESTRUCTURA MATHF (3)
- 43_CLASE PHYSICS (2)
- 44_ESTRUCTURA QUATERNION (1)
- 45_CLASE RANDOM (1)
- 46_ESTRUCTURA RAY (1)
- 47_ESTRUCTURA RAYCASTHIT (1)
- 48_ESTRUCTURA RECT (1)
- 49_CLASE RENDERSETTINGS (1)
- 50_CLASE SCREEN (1)
- 51_CLASE TIME (1)
- 52. CLASE YIELDINSTRUCTION (1)
- MONOGRAFICOS (2)
ENTRADAS
-
▼
2011
(127)
-
▼
octubre
(121)
- 116. ESTRUCTURA RAYCASTHIT
- 115. ESTRUCTURA RAY
- 114. CLASE RANDOM
- 113. ESTRUCTURA QUATERNION
- 112. CLASE PHYSICS (y II)
- 111. CLASE PHYSICS (I)
- 110. ESTRUCTURA MATHF (y III)
- 109. ESTRUCTURA MATHF (II)
- 108. ESTRUCTURA MATHF (I)
- 107. CLASE LIGHTMAPSETTINGS
- 106. CLASE GIZMOS
- 105. CLASE EVENT (y III)
- 104. CLASE EVENT (II)
- 107. CLASE EVENT (I)
- 106. CLASE DEBUG
- 105. CLASE CONTROLLERCOLLIDERHIT
- 104. CLASE COLLISION
- 103. ESTRUCTURA BOUNDS
- 102. CLASE INPUT (y IV)
- 101. CLASE INPUT (III)
- 100. CLASE INPUT (II)
- 99. CLASE INPUT (I)
- 98. CLASE TEXTURE2D (y II)
- 97. CLASE TEXTURE2D (I)
- 96. CLASE TEXTURE
- 95. CLASE GUILAYOUT (y IV)
- 94. CLASE GUILAYOUT (III)
- 93. CLASE GUILAYOUT (II)
- 92. CLASE GUILAYOUT (I)
- 91. CLASE GUI (y VIII)
- 90. CLASE GUI ( VII)
- 89. CLASE GUI (VI)
- 88. CLASE GUI (V)
- 87. CLASE GUI (IV)
- 86. CLASE GUI (III)
- 85. CLASE GUI ( II)
- 84. CLASE GUI (I)
- 83. CLASE GUITEXTURE
- 82. CLASE GUITEXT (y II)
- 81. CLASE GUITEXT (I)
- 80. CLASE GUIELEMENT
- 79. CLASE COMPONENT
- 78. CLASE PHYSICMATERIAL
- 77. CLASE SHADER
- 76. CLASE GAMEOBJECT (y VI)
- 75. CLASE GAMEOBJECT (V)
- 74. CLASE GAMEOBJECT (IV)
- 73. CLASE GAMEOBJECT (III)
- 72. CLASE GAMEOBJECT (II)
- 71. CLASE GAMEOBJECT (I)
- 70. CLASE MESH (y II)
- 69. CLASE MESH (I)
- 68. CLASE PARTICLEEMITTER (y III)
- 67. CLASE PARTICLEEMITTER (II)
- 66. CLASE PARTICLEEMITTER (I)
- 65. CLASE RENDERTEXTURE (y III)
- 64. CLASE RENDERTEXTURE (II)
- 63. CLASE RENDERTEXTURE (I)
- 62. CLASE CUBEMAP
- 61. CLASE MATERIAL (y III)
- 60. CLASE MATERIAL (II)
- 59. CLASE MATERIAL (I)
- 58. CLASE LIGHT (y III)
- 57. CLASE LIGHT (II)
- 56. CLASE LIGHT (I)
- 55. CLASE CAMERA (VI)
- 54. CLASE CAMERA (V)
- 53. CLASE CAMERA (IV)
- 52. CLASE CAMERA (III)
- 51. CLASE CAMERA (II)
- 50. CLASE CAMERA (I)
- 49. CLASE MONOBEHAVIOUR (y IX)
- 48. CLASE MONOBEHAVIOUR (VIII)
- 47. CLASE MONOBEHAVIOUR (VII)
- 46. CLASE MONOBEHAVIOUR (VI)
- 45. CLASE MONOBEHAVIOUR (V)
- 44. CLASE MONOBEHAVIOUR (IV)
- 43. CLASE MONOBEHAVIOUR (III)
- 42. CLASE MONOBEHAVIOUR (II)
- 41. CLASE MONOBEHAVIOUR (I)
- 40. CLASE BEHAVIOUR
- 39. CLASE CHARACTERJOINT
- 38. CLASE SPRINGJOINT
- 37. CLASE HINGEJOINT (y II)
- 36. CLASE HINGEJOINT (I)
- 35. CLASE JOINT (y II)
- 34. CLASE JOINT (I)
- 33. CLASE MESHFILTER
- 32. CLASE RENDERER (y II)
- 31. CLASE RENDERER (I)
- 30. CLASE CHARACTERCONTROLLER (y III)
- 29. CLASE CHARACTERCONTROLLER (II)
- 28. CLASE CHARACTERCONTROLLER (I)
- 27. CLASE MESHCOLLIDER
- 26. CLASE COLLIDER (II)
- 25. CLASE COLLIDER (I)
- 24. CLASE RIGIDBODY (y VIII)
- 23. CLASE RIGIDBODY (VII)
- 22. CLASE RIGIDBODY (VI)
- 21. CLASE RIGIDBODY (V)
-
▼
octubre
(121)