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.