1 00:00:03,570 --> 00:00:05,870 En este video vamos a hablar de ray casting. 2 00:00:06,120 --> 00:00:12,140 Imagínate un juego de disparos favorito por ejemplo Jedi o colectivo o quirze. 3 00:00:12,480 --> 00:00:16,610 Cualquiera que te ha gustado en esos juegos cómo sabes a qué le estás disparando. 4 00:00:16,650 --> 00:00:22,320 O por ejemplo cuando le disparas a algo o estás dentro de una balacera o le das un j a alguien. 5 00:00:22,320 --> 00:00:23,540 Cómo funciona eso. 6 00:00:23,550 --> 00:00:28,320 Todo esto funciona con el uso del real casting tu arma y todos los efectos visuales que salen de ellas 7 00:00:28,320 --> 00:00:30,400 son simplemente eso son efectos visuales. 8 00:00:30,480 --> 00:00:33,480 En realidad no están determinando A qué le pegas dentro del juego. 9 00:00:33,660 --> 00:00:38,970 Lo que sí determina es una línea invisible que va desde el centro de la pantalla a través de un mundo 10 00:00:38,970 --> 00:00:46,110 3D que Cheka con qué colisionar en el ambiente en el que estás jugando a esa línea es a la que llamamos 11 00:00:46,130 --> 00:00:46,990 urracas. 12 00:00:47,160 --> 00:00:53,720 Entonces lo que hacemos es disparar urracas desde mi mira desde mi centro de la pantalla hacia mi objetivo 13 00:00:54,350 --> 00:01:00,630 y lo que obtenemos de regreso es básicamente si hay algo obstruyendo el paso del huracán desde el punto 14 00:01:00,630 --> 00:01:03,550 de partida hasta el punto hacia donde estoy apuntando. 15 00:01:03,630 --> 00:01:08,370 Y si hay algo interponiéndose en el camino de ese rayo entonces eso es a lo que le estamos pegando y 16 00:01:08,370 --> 00:01:13,830 es entonces dónde podemos tal vez cambiar el color de ese objeto o los podemos detectar que es un hacha. 17 00:01:13,890 --> 00:01:16,640 Tal vez en ese punto vamos a aplicar una fuerza de una explosión. 18 00:01:16,740 --> 00:01:20,720 Todo basado en lo que nos va a regresar la información que nos va a regresar ese rayo. 19 00:01:20,760 --> 00:01:22,930 Habrá Broadcasting en Unity. 20 00:01:23,040 --> 00:01:28,710 Es un tema que se puede considerar un poco más avanzado tal vez nivel intermedio pero no se puede llegar 21 00:01:28,710 --> 00:01:31,860 a ser muy complicado pero voy a tratar de hacerlo lo más simplificado posible. 22 00:01:31,860 --> 00:01:37,200 No debería ser tan complicado entonces en nuestro juego lo que pasa es si por ejemplo yo voy aquí y 23 00:01:37,230 --> 00:01:40,980 Alito mi mi objeto Weapon otra vez. 24 00:01:40,980 --> 00:01:46,050 Debemos empezar a pensar desde dónde queremos crear este ricas. 25 00:01:46,080 --> 00:01:52,200 Bueno no lo vamos a hacer a partir del arma porque si te fijas bien el arma está apuntando a un ángulo 26 00:01:52,200 --> 00:01:57,750 muy extraño y sólo lo vamos a usar para dar la ilusión de que estamos disparando desde ese lugar de 27 00:01:57,750 --> 00:01:58,740 la pantalla. 28 00:01:58,920 --> 00:02:05,030 Pero lo que sí vamos a hacer es crear ese rayo a partir del centro de la pantalla usando nuestra cámara. 29 00:02:05,040 --> 00:02:08,670 Eso básicamente va a crear un rayo a través del mundo desde el centro de la pantalla. 30 00:02:09,000 --> 00:02:13,770 Y si ese rayo intercepta con algo básicamente podemos extraer su nombre. 31 00:02:13,920 --> 00:02:19,650 Podemos agregar algo de fuerza a ese objeto o lo que vamos a hacer en este curso es básicamente destruir 32 00:02:19,680 --> 00:02:22,450 algunas botellas y algunas cajas. 33 00:02:22,680 --> 00:02:25,510 Vamos a ver ahora cómo vamos a configurar helvéticas. 34 00:02:25,560 --> 00:02:30,750 Lo primero que vamos a hacer es ir a la documentación y buscar que ray casting para saber cómo usarlo. 35 00:02:30,870 --> 00:02:35,550 Entonces usando el pequeño icono del libro vamos a ir a nuestro browser y vamos a ver la documentación 36 00:02:36,000 --> 00:02:40,510 vamos a cambiarnos a Happy y luego vamos a escribir aquí breakfast. 37 00:02:40,680 --> 00:02:45,990 Aquí vas a encontrar algo llamado física ricas y lo que te va a hacer es emitir un rayo desde un punto 38 00:02:45,990 --> 00:02:53,160 de origen en una dirección con una longitud basada en maquillistas hacia todos los coladeros que estén 39 00:02:53,160 --> 00:02:54,320 en la escena. 40 00:02:54,570 --> 00:02:57,450 Entonces con físicas heroicas aquí lo tenemos. 41 00:02:57,450 --> 00:02:58,770 Cómo funciona. 42 00:02:59,040 --> 00:03:04,810 Pues ricas es básicamente lo que emite el Rayo y la razón por la cual está dentro de una sentencia es 43 00:03:05,040 --> 00:03:07,420 porque este método regresa. 44 00:03:07,610 --> 00:03:13,800 Si le pego a algo por ejemplo este código si emite el Rayo y le pega algo que tenga cola y va a imprimir 45 00:03:14,110 --> 00:03:20,310 debes Infonavit en este código particularmente lo que están haciendo es emitir un rayo desde la posición 46 00:03:20,730 --> 00:03:25,790 del objeto hacia forward y aquí arriba declaran CF y. 47 00:03:26,100 --> 00:03:29,100 Y va a tener una distancia de 10 metros. 48 00:03:29,130 --> 00:03:34,140 Aquí por ejemplo si tienes diferentes tipos de armas puedes declarar la distancia que va a tener cada 49 00:03:34,140 --> 00:03:35,010 tipo de arma. 50 00:03:35,190 --> 00:03:40,090 Si por ejemplo estás usando una escopeta la distancia podría ser 5 pero si estás usando un rifle podría 51 00:03:40,110 --> 00:03:41,820 hacer 30 horas. 52 00:03:41,820 --> 00:03:46,010 Para nosotros realmente no va a importar tanto la distancia pero es bueno que se capacite y empiezas 53 00:03:46,020 --> 00:03:49,830 a familiarizar con los conceptos del casting y ya lo había mencionado ricas. 54 00:03:49,860 --> 00:03:53,420 Puede ser un poquito intimidante porque en realidad consta de dos partes. 55 00:03:53,520 --> 00:04:00,360 Primero es emitir el Rayo y tienes que asignar una posición de origen para ese rayo y también está la 56 00:04:00,360 --> 00:04:03,570 parte de obtener información a partir de ese rayo. 57 00:04:03,720 --> 00:04:08,940 Entonces vamos a separar esto en dos partes lo primero va a ser emitir el Rayo a partir de la cámara 58 00:04:09,270 --> 00:04:13,530 y eso es todo lo que voy a hacer simplemente quiero saber si le pegué a algo que tiene un colador. 59 00:04:13,530 --> 00:04:16,180 Ahora cómo lo puedo hacer para emitir el Rayo desde mi cámara. 60 00:04:16,190 --> 00:04:21,960 Por ejemplo si yo escribo física becas transforma tu posición desde mi Player no es lo que quiero hacer 61 00:04:22,350 --> 00:04:28,530 lo que quiero hacer es precisamente emitir desde la Cámara vamos a ver aquí hay más ejemplos en la documentación. 62 00:04:28,550 --> 00:04:31,530 Creo que por aquí abajo tiene un ejemplo justamente de eso. 63 00:04:31,680 --> 00:04:37,430 Por ejemplo dicen aquí lo mismo que arriba usando Red punto y punto. 64 00:04:37,580 --> 00:04:43,050 En el lugar de origen y dirección que nos fue súper útil. 65 00:04:43,060 --> 00:04:46,630 Pero este ejemplo que está aquí es lo que queremos hacer nosotros. 66 00:04:46,740 --> 00:04:51,990 Por ejemplo esto de aquí en lugar de usar Transform punto posición podríamos especificar una variable 67 00:04:51,990 --> 00:04:57,780 de tipo de rey y tal vez puede ser un poco confuso ver aquí la variable Rey y Rey pero lo que estamos 68 00:04:57,780 --> 00:05:00,150 haciendo aquí es básicamente decir dónde. 69 00:05:00,350 --> 00:05:02,980 El origen de ese rayo en este caso es la cama. 70 00:05:03,100 --> 00:05:08,760 Y entonces aquí están diciendo el Rey Rey es igual a cama apuntó humain Rey. 71 00:05:08,880 --> 00:05:11,380 Y lo que están haciendo aquí es emitirã y ricas. 72 00:05:11,380 --> 00:05:13,110 Desde la posición del manos. 73 00:05:13,180 --> 00:05:17,830 Pero nosotros lo vamos a hacer desde el centro de la pantalla y eso es lo que te voy a enseñar porque 74 00:05:18,190 --> 00:05:21,650 a final de cuentas este punto es un vector. 75 00:05:21,910 --> 00:05:28,330 Usando un vector 3 también obtener el centro de mi pantalla y viendo un poco más la documentación que 76 00:05:28,710 --> 00:05:31,830 ya tenemos suficiente información. 77 00:05:32,330 --> 00:05:36,830 Vamos a regresar al editor de Unity y vamos a configurar nuestro rayo. 78 00:05:36,880 --> 00:05:42,370 Lo primero que vamos a hacer es abrir nuestro script de Player y el objetivo aquí es emitir un rayo 79 00:05:42,370 --> 00:05:46,110 desde el centro de la pantalla usando el tiempo en Uruguay. 80 00:05:46,450 --> 00:05:53,550 Entonces vamos a ir a nuestro obp y lo que vamos a hacer es crear la lógica de disparar nuestra arma. 81 00:05:53,650 --> 00:05:59,880 La forma en que vamos a disparar es presionando el clic en el botón izquierdo del mouse cada vez que 82 00:05:59,980 --> 00:06:02,240 presiona el botón quiero emitir ese rayo. 83 00:06:02,350 --> 00:06:04,000 Entonces cómo hago esto. 84 00:06:04,000 --> 00:06:05,640 Bueno es relativamente sencillo. 85 00:06:05,980 --> 00:06:14,660 Sólo tengo que decir si presiono clic emitió un rayo desde la pantalla en cámara desde el centro de 86 00:06:14,900 --> 00:06:16,110 la Cámara. 87 00:06:16,360 --> 00:06:19,250 Ahí es donde tengo que usar métodos greenpoint. 88 00:06:19,540 --> 00:06:23,290 Entonces vamos Traduciendo esto a código entonces necesito una sentencia. 89 00:06:23,560 --> 00:06:28,800 Queremos revisar nuestro click izquierdo del botón izquierdo del mouse pongo input Puntoticket mouse 90 00:06:29,260 --> 00:06:31,440 botón Down y ese botón es el cero. 91 00:06:31,490 --> 00:06:37,300 Si presiona este botón lo que lleva a emitir el Rayo desde el centro de mi cámara ahora cómo obtenemos 92 00:06:37,300 --> 00:06:41,010 el centro de la cámara y cómo vamos a emitir ese rayo. 93 00:06:41,290 --> 00:06:48,490 Cuando estábamos haciendo casting siempre empezamos obteniendo el ory el origen del Rayo desde donde 94 00:06:48,490 --> 00:06:50,880 quiero que salga este radio donde quiero emitirlo. 95 00:06:50,890 --> 00:06:55,150 Para eso voy a declarar una variable Rey y el apoyo moral como quiera en este caso para que haga más 96 00:06:55,150 --> 00:07:02,080 sentido lo voy a llamar rey Young y lo igual acá me apunto main cámara .20 es una forma rápida de tener 97 00:07:02,080 --> 00:07:08,240 acceso a la cámara principal y luego voy a poner punto y luego escribo escribe Pointe Rey. 98 00:07:08,450 --> 00:07:14,430 Si te fijas el chip dice que regresa un rayo oyendo desde la cámara hacia un punto en la pantalla. 99 00:07:14,710 --> 00:07:20,890 Si te fijas también aquí tenemos por ejemplo obvio que impongan o in tenemos varias opciones aquí vamos 100 00:07:20,890 --> 00:07:27,790 a ver más de una específicamente la de Vigo pero por lo pronto usamos Skype y esto es lo que tenemos 101 00:07:27,790 --> 00:07:33,010 que hacer es pasarle un vector 3 que se llama posición posesión posición básicamente es el centro de 102 00:07:33,010 --> 00:07:39,160 mi pantalla y para obtener ese punto simplemente hacemos un poquito de matemáticas dentro y básicamente 103 00:07:39,160 --> 00:07:44,890 lo que va a tener es un vector que va a contener el largo de mi pantalla y esa información la podemos 104 00:07:44,890 --> 00:07:50,630 obtener podemos obtener información de cualquier pantalla que el usuario esté utilizando en ese momento. 105 00:07:50,860 --> 00:07:55,170 Por ejemplo equipo Escribir escriben punto Wit y eso me va a regresar. 106 00:07:55,390 --> 00:07:59,920 El ancho de la pantalla en la que se esté utilizando el juego y si quiero obtener justo el centro de 107 00:07:59,920 --> 00:08:03,930 la pantalla pues simplemente Wit y lo divido entre dos. 108 00:08:03,970 --> 00:08:06,650 Así obtenemos el punto central en X. 109 00:08:06,670 --> 00:08:11,940 Lo siguiente que tengo que hacer es ahora que ya tengo el X es hacer exactamente lo mismo pero para 110 00:08:12,000 --> 00:08:12,450 qué. 111 00:08:12,610 --> 00:08:19,630 Pero para allá voy a utilizar el Punto G y ese lo divido entre dos y la acepta no importa la puedo dejar 112 00:08:19,660 --> 00:08:20,690 en cero. 113 00:08:21,250 --> 00:08:23,140 Y bueno vamos a salvar esto. 114 00:08:23,460 --> 00:08:31,390 Bueno vamos a poner los dos en Flock por si las dudas vamos a ver está bien cerrado esto y me está dando 115 00:08:31,390 --> 00:08:41,380 un error Pointe y la razón es que siempre que nosotros pasamos un vector 3 como por éste de posesión 116 00:08:41,740 --> 00:08:44,110 necesitamos pasarlo como un nuevo vector 3D. 117 00:08:44,200 --> 00:08:46,140 Nos hace falta el New vector 3. 118 00:08:46,150 --> 00:08:52,530 Luego escribimos nuestros tres datos y Z y cerramos el paréntesis. 119 00:08:52,810 --> 00:08:58,230 Ahora si ya tenemos nuestro origen del Rayo y este va a ser el centro de nuestra pantalla. 120 00:08:58,270 --> 00:09:04,660 Ahora lo que nos falta es revisar si colisiona con algo y para eso voy a escribir esta sentencia y entonces 121 00:09:04,660 --> 00:09:07,650 escribo y físicas Forecast. 122 00:09:07,780 --> 00:09:13,000 Y esto es lo que básicamente va a provocar que se emita el Rayo y que empiece a revisar por colisiones 123 00:09:13,000 --> 00:09:14,540 dentro de mi mundo 3D. 124 00:09:14,770 --> 00:09:18,960 Y como puedes ver aquí en el TTIP tenemos más de una docena de opciones a elegir. 125 00:09:18,970 --> 00:09:23,720 Para poder invocar este método y yo voy a utilizar. 126 00:09:25,320 --> 00:09:26,980 Creo que es la primera. 127 00:09:27,170 --> 00:09:33,650 O por ejemplo tenemos la número cinco que especifica un rayo especifica a su distancia máxima y luego 128 00:09:33,650 --> 00:09:36,270 especifica un Layar más leyes más. 129 00:09:36,280 --> 00:09:42,290 Es básicamente una máscara de invisibilidad por ejemplo puedes ignorar ciertas cosas que estén en ciertas 130 00:09:42,290 --> 00:09:46,760 capas como por ejemplo cuando quieres que tus disparos no le afecten a tus compañeros. 131 00:09:46,760 --> 00:09:52,690 Por ejemplo puedes poner una capa y simplemente ignorar el ricas de esa capa de igualarían más está 132 00:09:52,820 --> 00:09:54,430 fuera del scoop de lo que estamos haciendo. 133 00:09:54,440 --> 00:09:58,080 Pero sólo tienes que saber que son muy útiles. 134 00:09:58,340 --> 00:10:05,780 Pero bueno entonces tenemos fe y creo que hay una que simplemente toma la dirección de ver tenemos por 135 00:10:05,780 --> 00:10:08,370 ejemplo una que trae un regalo. 136 00:10:09,100 --> 00:10:13,450 Esta va a ser la segunda la que solamente tiene un rey y una distancia. 137 00:10:13,700 --> 00:10:19,850 Ahora si tengo físico ricas y el Rayo lo voy a pasar Orin y vamos a disparar al infinito para disparar 138 00:10:19,850 --> 00:10:20,570 al infinito. 139 00:10:20,620 --> 00:10:25,090 Estoy o tengo que utilizar Infinity. 140 00:10:25,310 --> 00:10:30,460 Ahora si golpeamos algo con ese rayo que tenga un colador lo que vamos a hacer es escribir aquí debo 141 00:10:30,510 --> 00:10:39,020 puntos Doc y voy a escribir ricas si vamos a salvar esto y voy a regresar a Unity. 142 00:10:40,270 --> 00:10:47,860 Voy a correr el juego y ahora si estoy emitiendo un rayo desde el centro de mi pantalla y si te golpeo 143 00:10:47,920 --> 00:10:50,580 algo con un colador debería de empezar. 144 00:10:50,880 --> 00:10:53,200 Vamos a imprimirle el nombre en mi consola. 145 00:10:53,630 --> 00:10:59,480 Si por ejemplo le apuntamos a pienso de inmediato va a imprimir aquí ricas. 146 00:10:59,920 --> 00:11:04,960 Ahora viendo el tipo de este que está aquí me doy cuenta que no tiene un colador porque no está imprimiendo 147 00:11:04,960 --> 00:11:08,490 su nombre vamos a darle un colador. 148 00:11:08,500 --> 00:11:11,930 Así vamos a poder dispararle un rayo vamos a ver que le estamos apuntando a él. 149 00:11:12,100 --> 00:11:19,300 Hacemos clic en el Chac mano aquí y luego hacemos clic Component le agregamos un box Heider y luego 150 00:11:19,360 --> 00:11:23,640 editamos para que se queden más o menos del tamaño del personaje. 151 00:11:23,880 --> 00:11:25,010 Salvamos la escena. 152 00:11:25,150 --> 00:11:30,910 Voy a correr de nuevo el juego y ahora debería cuando el apuntemos al Txarrak debería de imprimir su 153 00:11:30,910 --> 00:11:39,390 nombre y no esté funcionando porque es cuando presionas el click. 154 00:11:41,380 --> 00:11:46,920 Olvide que la lógica era cuando presiona el botón Yo pensé que era solo apuntarle pero ahí lo tienen. 155 00:11:46,920 --> 00:11:53,190 Le estoy golpeando al Changan estoy golpeando al piso y cualquier cosa que tenga un colador me va a 156 00:11:53,190 --> 00:11:53,770 regresar. 157 00:11:53,790 --> 00:11:56,030 El mensaje radical Santi. 158 00:11:56,100 --> 00:11:59,550 Ahora lo que tenemos que hacer es determinar a qué le estoy pegando. 159 00:11:59,850 --> 00:12:03,240 Recuerden que en nuestro juego solamente le puedo disparar a ciertas cosas. 160 00:12:03,240 --> 00:12:08,050 Entonces aquí es cuando necesitamos obtener información del objeto al que le estoy pegando. 161 00:12:08,070 --> 00:12:13,320 Eso nos lleva a la información del golpe que nos va a regresar el Rayo. 162 00:12:13,530 --> 00:12:15,670 Pero eso lo vamos a ver en el siguiente video.