1 00:00:02,800 --> 00:00:08,520 [Música de presentación] 2 00:00:09,080 --> 00:00:10,880 (Profesor) Comencemos ejecutando el juego 3 00:00:10,960 --> 00:00:12,960 y corroborando cuál es el radio de colisión 4 00:00:13,040 --> 00:00:15,000 de cada uno de los personajes. 5 00:00:15,080 --> 00:00:17,480 Si pulso la tecla "F9", 6 00:00:17,560 --> 00:00:20,000 observá que el radio de colisión de cada personaje 7 00:00:20,080 --> 00:00:22,160 es aún muy pequeño. 8 00:00:22,240 --> 00:00:23,920 Lo que tenemos que hacer es adaptarlo 9 00:00:24,000 --> 00:00:25,960 para que, en realidad, el radio de colisión tenga 10 00:00:26,040 --> 00:00:28,440 casi la misma figura que la imagen. 11 00:00:30,840 --> 00:00:33,160 Primero, voy a ir al código del vampiro 12 00:00:33,240 --> 00:00:35,920 y voy a ponerle un radio de colisión de "30". 13 00:00:40,720 --> 00:00:42,280 Y, en el caso de las calabazas, 14 00:00:42,360 --> 00:00:45,160 voy a probar con un radio de colisión de "60". 15 00:00:50,760 --> 00:00:52,200 Ejecutemos nuevamente el juego 16 00:00:52,280 --> 00:00:55,120 para ver cómo quedaron los radios de colisión. 17 00:00:55,680 --> 00:00:56,960 Si pulso la tecla "F9", 18 00:00:57,040 --> 00:00:59,240 puedo ver que ahora el protagonista tiene un radio de colisión, 19 00:00:59,320 --> 00:01:02,200 que aún es un poco chico, pero me va a servir 20 00:01:02,280 --> 00:01:04,160 y las calabazas tienen un radio de colisión 21 00:01:04,240 --> 00:01:07,400 que coincide casi exactamente con la imagen. 22 00:01:09,840 --> 00:01:11,920 El siguiente paso es crear el código necesario 23 00:01:12,000 --> 00:01:13,800 para manejar las colisiones. 24 00:01:13,880 --> 00:01:17,400 Lo que voy a hacer primero es ir al fondo del código fuente, 25 00:01:17,480 --> 00:01:20,320 en donde se construyen el personaje y las calabazas 26 00:01:20,400 --> 00:01:21,880 y voy a tratar de crear una variable 27 00:01:21,960 --> 00:01:25,040 para agrupar a todas las calabazas y mantenerlas juntas. 28 00:01:25,120 --> 00:01:27,280 Voy a crear la variable "Calabazas". 29 00:01:29,320 --> 00:01:31,280 Inicialmente va a ser una lista vacía 30 00:01:31,360 --> 00:01:33,120 y, cada vez que construya una nueva calabaza, 31 00:01:33,200 --> 00:01:35,000 voy a agregarla a esa lista. 32 00:01:40,520 --> 00:01:43,600 Luego tengo que invocar a la función "Agregar" 33 00:01:43,680 --> 00:01:45,040 para decirle a Pilas que, en realidad, 34 00:01:45,120 --> 00:01:47,520 hay una nueva colisión en mi programa. 35 00:01:48,040 --> 00:01:53,560 Así que escribo "pilas.mundo.colisiones.agregar"... 36 00:01:54,520 --> 00:01:57,120 y especifico los argumentos: 37 00:01:57,840 --> 00:02:00,000 quién va a ser el protagonista de mi juego 38 00:02:00,080 --> 00:02:03,280 y cuáles son los enemigos con los que voy a interactuar. 39 00:02:04,840 --> 00:02:07,640 El tercer argumento tiene que ser una función 40 00:02:07,720 --> 00:02:10,240 que va a actuar como respuesta a la colisión. 41 00:02:10,320 --> 00:02:13,560 Por ejemplo, "cuando_colisionan" 42 00:02:16,000 --> 00:02:17,760 va a ser la función en donde yo voy a elegir 43 00:02:17,840 --> 00:02:20,920 qué quiero que ocurra cuando se produce la colisión. 44 00:02:25,720 --> 00:02:28,280 Es importante que esta función tenga dos argumentos, 45 00:02:28,360 --> 00:02:30,080 que van a ser los dos nombres 46 00:02:30,160 --> 00:02:32,960 que van a recibir los objetos que entran en contacto. 47 00:02:33,040 --> 00:02:35,560 En este caso, el vampiro y una calabaza. 48 00:02:43,400 --> 00:02:45,200 Para probar si esto funciona correctamente, 49 00:02:45,280 --> 00:02:46,960 vamos a hacer un código bastante simple. 50 00:02:47,040 --> 00:02:50,320 Vamos a tomar ese argumento "Calabaza" 51 00:02:50,400 --> 00:02:52,080 y lo vamos a eliminar. 52 00:02:53,840 --> 00:02:55,760 De esta forma, cuando ejecutemos el juego, 53 00:02:55,840 --> 00:02:57,880 lo que vamos a tener que observar 54 00:02:57,960 --> 00:03:00,000 es que, ante la primera colisión que se produzca 55 00:03:00,080 --> 00:03:02,840 entre el protagonista y los enemigos, 56 00:03:02,920 --> 00:03:05,360 el enemigo va a desaparecer directamente. 57 00:03:10,520 --> 00:03:13,920 Ahora nosotros en realidad queremos hacer dos tipos de colisiones. 58 00:03:14,000 --> 00:03:16,200 Queremos distinguir estos dos casos: 59 00:03:16,280 --> 00:03:18,680 cuando el actor toca al enemigo con los pies 60 00:03:18,760 --> 00:03:22,200 o cuando el enemigo toca al protagonista en la cabeza. 61 00:03:22,960 --> 00:03:24,080 Haciendo algunas pruebas, 62 00:03:24,160 --> 00:03:27,120 me di cuenta de que distinguir estos dos casos es bastante simple. 63 00:03:27,200 --> 00:03:31,320 Lo que tengo que hacer es utilizar de vuelta la condición "if". 64 00:03:31,600 --> 00:03:33,680 Podría corroborar que el vampiro 65 00:03:33,760 --> 00:03:36,000 o, mejor dicho, la posición vertical del vampiro 66 00:03:36,080 --> 00:03:39,240 es mayor a la posición vertical de la calabaza... 67 00:03:44,200 --> 00:03:46,280 sumado a cincuenta píxeles. 68 00:03:49,160 --> 00:03:50,440 A este número cincuenta, 69 00:03:50,520 --> 00:03:52,040 lo encontré después de hacer varias pruebas 70 00:03:52,120 --> 00:03:53,400 jugando el videojuego.