1
00:00:00,600 --> 00:00:07,020
Vamos a empezar por reformatear una parte de nuestro código para poder explicaros la aleatoriedad.

2
00:00:07,110 --> 00:00:13,470
La verdad es que es muy cómodo esto de la tecla S, porque claro, pulsar la tecla y puedes testear

3
00:00:13,710 --> 00:00:17,100
primero que la posición es la adecuada y segundo, que los animales son aleatorios.

4
00:00:18,650 --> 00:00:23,850
Pero está claro que si dejamos que sea el usuario el que pawnee animales, igual no es pawnee a nada

5
00:00:23,850 --> 00:00:25,350
y el tío vive más feliz que una perdiz.

6
00:00:26,160 --> 00:00:33,060
Por tanto, lo que tenemos que forzar lo primero es que en base a algún criterio que ahora hablaremos

7
00:00:33,060 --> 00:00:35,250
de ello, se ejecute este código.

8
00:00:35,910 --> 00:00:42,960
Hasta ahora es dentro de la daiteke cuando el usuario decide pulsar la tecla S, pero yo creo que lo

9
00:00:42,960 --> 00:00:49,230
adecuado sería basado en el tiempo que cada un segundo, cada dos segundos, cada tres segundos, cada

10
00:00:49,230 --> 00:00:50,100
tiempo aleatorio.

11
00:00:50,130 --> 00:00:53,790
Ahora que ya sabeis hacer tiempo aleatorio, os vais a hacer valores aleatorios.

12
00:00:54,210 --> 00:00:58,350
Se expande un número determinado de enemigos 1, 2, 3 o 50.

13
00:01:00,060 --> 00:01:06,600
Por tanto, vamos a empezar por reformatear este código y luego añadir la parte de la física que nos

14
00:01:06,600 --> 00:01:08,160
va a dar la interacción.

15
00:01:08,190 --> 00:01:13,020
Las colisiones, los choques y que de hecho, para los que queríais implementar el sistema de balas

16
00:01:13,020 --> 00:01:18,270
en el juego de las naves o los coches o demás, será exactamente el mismo que veremos aquí mismo el

17
00:01:18,300 --> 00:01:18,540
mismo.

18
00:01:20,430 --> 00:01:26,250
También habrá que tener en cuenta un mensaje de game over si los animales llegan abajo del todo o lo

19
00:01:26,250 --> 00:01:30,450
que sea, o se llega alguna condición de mover y así cerraremos el gameplay.

20
00:01:31,190 --> 00:01:41,760
Vale, pues empecemos por el método de Spanic, método de Spanic, que es este trozo que tengo aquí

21
00:01:42,800 --> 00:01:44,640
ya hace la función que toca.

22
00:01:45,180 --> 00:01:52,740
El problema que tengo, si lo coloco dentro de la ley, es que voy a forzar que este código se ejecute

23
00:01:52,940 --> 00:01:53,630
a cada fring.

24
00:01:54,690 --> 00:02:02,730
Realmente la instancia acción no debería ser acada Frend debería ser cada vez que ocurra cierta condición

25
00:02:02,790 --> 00:02:08,160
o que pasa una cantidad de tiempo, o que se hayan matado todos los enemigos o vete a saber tu que,

26
00:02:09,270 --> 00:02:11,990
pero está claro que no debería depender de un frame.

27
00:02:13,100 --> 00:02:16,940
Si no queremos que dependa de un frame, puede ir dentro de app.

28
00:02:17,430 --> 00:02:25,020
La respuesta es no, porque estáis limitados a que todo el código deba ir ahí dentro.

29
00:02:25,920 --> 00:02:31,380
Entonces, cuál es la función que vamos a utilizar?

30
00:02:31,950 --> 00:02:38,840
Pues no será ninguna de la API de Unity, ni será el estar, ni será el aguay, ni el triguera, ni

31
00:02:39,240 --> 00:02:40,170
ni nada de esto.

32
00:02:40,770 --> 00:02:45,510
Será una función que vamos a crear nosotros y que le vamos a indicar a Unity.

33
00:02:45,780 --> 00:02:50,160
Oye, llámala cada segundo, cada dos segundos, cada 5 segundos, cada x segundos.

34
00:02:50,610 --> 00:02:52,950
Esto es lo que se llaman funciones invocadas.

35
00:02:53,580 --> 00:02:56,090
Una función invocada es exactamente eso.

36
00:02:56,160 --> 00:03:03,570
Tenemos una función que queremos que ocurra cada cierta cantidad de tiempo para llegar a ello.

37
00:03:03,930 --> 00:03:05,370
Lo voy a hacer en varias fases.

38
00:03:06,120 --> 00:03:12,510
La primera es la siguiente a ver, en heladerita esto funciona, va magnifico y no hay ningún problema.

39
00:03:13,520 --> 00:03:16,270
Pero lo primero que he dicho es no puede ir en el Android.

40
00:03:16,320 --> 00:03:18,570
No lo puedo ligar a un frame concreto.

41
00:03:19,020 --> 00:03:21,030
Tiene que ser una función genérica.

42
00:03:21,640 --> 00:03:23,790
Pues paso número 1 vamos a crear esa función.

43
00:03:24,270 --> 00:03:31,380
Para ello fijaros que de momento teníamos el estar por un lado y por otro, vosotros en cualquier lado

44
00:03:31,380 --> 00:03:34,090
de vuestro código podéis crear tantas funciones como queráis.

45
00:03:34,730 --> 00:03:42,120
Yo normalmente suelo elegir que el inicio es para variables, para propiedades y que luego vienen funciones,

46
00:03:42,120 --> 00:03:43,050
eventos y demás.

47
00:03:43,150 --> 00:03:48,030
Y de hecho, casi siempre al principio dejo las de Unity estar a Android lo que sea.

48
00:03:48,410 --> 00:03:51,540
Y no es hasta que no acaban todas estas, creo las mías propias.

49
00:03:52,020 --> 00:03:57,480
Entonces, debajo de la doy y cuando digo debajo de ataque me refiero debajo de la llave que cierra

50
00:03:57,480 --> 00:03:58,050
el adeu.

51
00:03:58,410 --> 00:04:03,300
Si es la primera vez que programa descuidado que me he encontrado de todo en esta vida he encontrado

52
00:04:03,300 --> 00:04:04,890
gente que me lo pone dentro de la doy.

53
00:04:05,100 --> 00:04:09,660
No podéis tener funciones dentro de funciones y esperar que todo funcione correctamente.

54
00:04:10,140 --> 00:04:16,440
Vale, entonces, después de la llave que cierra el ataque, cómo se cierra?

55
00:04:16,640 --> 00:04:20,160
Utilizad Raider, veis las rayitas estas que se ven aquí?

56
00:04:21,540 --> 00:04:23,940
Veis esta llave?

57
00:04:24,480 --> 00:04:27,740
Si esta es la que abre y la seguís verticalmente, llegais a la que cierra?

58
00:04:28,080 --> 00:04:33,810
Pues después de la que cierra aquí vais a crear vuestras propias funciones para crear una función.

59
00:04:34,140 --> 00:04:41,850
Es como crear una variable nivel de protección público privado que va a devolver la función, va a devolver

60
00:04:41,850 --> 00:04:45,810
un número, a devolver un string, no va a devolver nada a nombre de la función.

61
00:04:46,710 --> 00:04:47,820
En este caso, qué creéis?

62
00:04:47,820 --> 00:04:56,850
Que las funciones por regla general deben ser públicas o privadas públicas para poder usarlas?

63
00:04:56,900 --> 00:04:59,580
Pues este es el caso donde va a ser privada para que nadie mas pueda.

64
00:05:00,570 --> 00:05:01,340
Es todo al revés.

65
00:05:02,000 --> 00:05:07,040
Por qué este método de esta clase?

66
00:05:07,140 --> 00:05:12,560
El ayer es el único que tiene que ser capaz de escanear enemigos.

67
00:05:12,620 --> 00:05:15,020
Nadie más tiene que ser capaz de escanear.

68
00:05:15,860 --> 00:05:23,090
Entonces, si yo quiero que estas líneas de código que tengo por aquí solo las llame el input manager,

69
00:05:23,090 --> 00:05:26,030
o sea, un manager y nadie más.

70
00:05:26,540 --> 00:05:32,390
No me queda más remedio que declarar mi función como privada, porque si no desde el Player Controller

71
00:05:32,390 --> 00:05:36,770
podría llamar a esta función y crear más enemigos desde un controller que no tiene ningún sentido.

72
00:05:37,100 --> 00:05:43,700
Ya os dije que ante la duda, intentad que todo quede lo más protegido posible, que si realmente no

73
00:05:43,700 --> 00:05:46,680
necesitáis exponer públicamente una variable, no lo hagáis.

74
00:05:47,110 --> 00:05:51,530
Y en este caso, como al único que le importa cómo se expandían enemigos es el propio manager.

75
00:05:51,920 --> 00:05:55,970
Esta función debe ser privada para que nadie más sea capaz de invocarla en ningún momento.

76
00:05:56,400 --> 00:06:03,740
Entonces, playboys es la palabra reservada cuando se ejecuta todo esto y de hecho aquí lo podéis ver.

77
00:06:04,130 --> 00:06:10,370
Aquí generamos algún número entero, algún string, algún vulcano, generamos algo que haya que guardar

78
00:06:10,600 --> 00:06:12,410
o sólo es tu por un enemigo?

79
00:06:12,410 --> 00:06:13,260
Por ahí ya está.

80
00:06:14,180 --> 00:06:17,300
No generamos nada, no devolvemos un resultado al final de la operación.

81
00:06:17,660 --> 00:06:21,540
Por tanto, esta es la palabra reservada bait boite, boitel ingleses.

82
00:06:21,590 --> 00:06:25,850
Vacío y vacío significa no hagas nada, no devuelvas nada.

83
00:06:26,270 --> 00:06:27,920
Podría ser que devolvieran algo.

84
00:06:27,950 --> 00:06:30,380
Por ejemplo, podríamos devolver un número entero.

85
00:06:30,710 --> 00:06:32,300
Podríamos devolver un string?

86
00:06:32,750 --> 00:06:34,160
Podríamos devolver un float.

87
00:06:34,310 --> 00:06:38,690
Habrá casos en los que habrá que crear funciones o métodos que devuelvan cosas.

88
00:06:39,170 --> 00:06:39,920
Este no es el caso.

89
00:06:40,130 --> 00:06:41,650
Este no va a devolver absolutamente nada.

90
00:06:42,500 --> 00:06:44,750
Y luego el nombre del método.

91
00:06:45,620 --> 00:06:46,790
Esto es lo que va a hacer.

92
00:06:46,910 --> 00:06:51,410
Va a generar un enemigo aleatorio, de hecho, un animal aleatorio.

93
00:06:52,100 --> 00:06:57,500
Vamos a llamar a la función recordad, empieza en mayúsculas siempre Camel Keys para nombrar funciones

94
00:06:58,670 --> 00:07:05,070
yen here to spawn random animal.

95
00:07:06,460 --> 00:07:13,190
Entonces fijaros que habéis creado una función privada para que sólo la use el propio manager que no

96
00:07:13,190 --> 00:07:22,700
va a devolver nada y cuyo nombre es Spawn Random, que me he comido la n animal para poder spamear este

97
00:07:22,700 --> 00:07:24,650
enemigo o este animal.

98
00:07:25,460 --> 00:07:26,810
Necesitamos algo aquí.

99
00:07:26,870 --> 00:07:28,220
Necesitamos algún parámetro?

100
00:07:28,220 --> 00:07:30,170
Necesitamos alguna información adicional.

101
00:07:30,710 --> 00:07:37,880
De hecho, cuando yo he utilizado aquí el código dentro del Apdayc, he utilizado alguna variable especial

102
00:07:37,970 --> 00:07:39,260
a la que no tenga acceso?

103
00:07:39,830 --> 00:07:45,220
La respuesta es no, porque el spawn reiche es una variable de la clase y tengo acceso X ruandesa.

104
00:07:45,220 --> 00:07:52,040
Este valor es pomposo, es una variable de la clase cero, es un número boss, lo utilizo por aquí abajo.

105
00:07:53,590 --> 00:07:55,070
Enemigos Tengo acceso a enemigos.

106
00:07:55,160 --> 00:07:57,830
Animal índex Tengo acceso a Animal índex.

107
00:07:58,340 --> 00:07:59,240
Tengo acceso a todo.

108
00:07:59,330 --> 00:08:01,100
No necesito ningún parámetro adicional.

109
00:08:01,130 --> 00:08:05,990
No necesito ninguna ayuda para suministrarse aquí dentro del paréntesis.

110
00:08:06,350 --> 00:08:12,800
Por tanto, en este caso tenemos una función que no necesita de nada y no devuelve nada.

111
00:08:12,890 --> 00:08:15,190
Solo hace cosas, pero no las devuelve.

112
00:08:15,950 --> 00:08:22,630
Y lo que hacemos es vamos a copiar todo el código que habíamos dejado en el interior del input get it

113
00:08:22,640 --> 00:08:23,920
down que de s.

114
00:08:24,470 --> 00:08:27,890
Vamos a cortar y lo voy a copiar dentro de un random.

115
00:08:28,820 --> 00:08:35,900
Fijaros que al final lo que acabo de hacer es todo lo que antes hacía dentro del IF Input Get Down.

116
00:08:36,830 --> 00:08:40,480
Ahora lo hace un método llamado Spawn Random Animal.

117
00:08:41,470 --> 00:08:45,470
Aquí en particular es muy importante sobre todos los que es la primera vez que programa o no tenéis

118
00:08:45,470 --> 00:08:46,370
mucha experiencia.

119
00:08:46,970 --> 00:08:52,010
Esto sí que es importante que os quede claro de buenas a primeras es los modificadores de privacidad,

120
00:08:52,010 --> 00:08:52,850
publicidad.

121
00:08:53,300 --> 00:08:57,120
Recordad que por defecto no poner nada y privado en lo mismo.

122
00:08:57,920 --> 00:09:00,080
Recordad que sobran en general la palabra playboy.

123
00:09:00,850 --> 00:09:04,960
Veidt quiere decir que no vais a devolver nada si aquí le pusiera string.

124
00:09:07,220 --> 00:09:10,910
El método véis que se me queja, que se me pone aquí de color rojo porque le he dicho vas a devolver

125
00:09:10,910 --> 00:09:11,600
un string.

126
00:09:12,250 --> 00:09:15,980
Entonces, claro, si tengo que devolver un string al final del método, en algún lado tengo que hacer

127
00:09:15,980 --> 00:09:16,620
un returned.

128
00:09:17,650 --> 00:09:18,360
Hola, que hace?

129
00:09:18,890 --> 00:09:20,510
Le tengo que devolver un string.

130
00:09:21,140 --> 00:09:24,230
Si tuviera que devolver un número con decimales float.

131
00:09:25,150 --> 00:09:29,500
Pues no puedo devolver un string voice que se me pone de color rojo porque esto no es un número decimal

132
00:09:29,870 --> 00:09:33,580
tres coma catorce quince nueve dos seis cinco.

133
00:09:33,760 --> 00:09:44,840
F Necesito devolver una condición booleana públic o vull y devuelve una condición booleana true o Fool's

134
00:09:44,840 --> 00:09:45,900
verdadero o falso.

135
00:09:46,250 --> 00:09:49,850
Veis que si vais a devolver algo primero, la cabecera lo tiene que tener claro.

136
00:09:49,940 --> 00:09:55,310
Y segundo, al final del método tenéis que devolver esa cosa y eso es importante si no vais a devolver

137
00:09:55,310 --> 00:09:58,520
nada, si no os hace falta absolutamente nada al final del método.

138
00:09:58,790 --> 00:09:59,460
Pues lo que hemos dicho.

139
00:09:59,880 --> 00:10:02,000
Bait y no devuelve nada.

140
00:10:03,050 --> 00:10:04,770
Se acabó y vale.

141
00:10:06,280 --> 00:10:15,400
Evidentemente si queréis recuperar lo que teníamos antes, cuando se pulsa la tecla s generar un enemigo

142
00:10:15,400 --> 00:10:16,140
aleatorio.

143
00:10:16,810 --> 00:10:21,880
Ahora dentro de estas llaves de Lir ya no hace falta escribir todo este código.

144
00:10:22,240 --> 00:10:23,600
Veis que me hace bastante.

145
00:10:23,650 --> 00:10:28,330
Basta invocar a la función Spawn Random Animal porque es un rando Mãnimas.

146
00:10:28,360 --> 00:10:34,870
Ya es Parnia el animal, entonces lo único que necesito es dentro de este hacer un spawn random animal

147
00:10:34,900 --> 00:10:40,700
que aquí ha aparecido Novais y así recuperaría la función aquí.

148
00:10:41,230 --> 00:10:46,960
Esto es muy importante porque lo que estáis es ante las puertas de la programación orientada a objetos,

149
00:10:47,660 --> 00:10:54,550
que lo que intenta es encapsular los comportamientos dentro de clases y que cada una de los comportamientos

150
00:10:54,550 --> 00:10:55,810
sea auto constructivo.

151
00:10:55,810 --> 00:11:01,720
Es decir, yo aquí voy a tener un método que me va a ser capaz de escanear un animal aleatorio y lo

152
00:11:01,720 --> 00:11:08,830
voy a utilizar cuando al inicio, cuando pulse la tecla S cada 5 segundos, cada vez que desaparezcan

153
00:11:08,830 --> 00:11:12,960
los enemigos, cada vez que ocurra algo, cuando puedo invocar a esta función, cuando me dé la gana,

154
00:11:13,240 --> 00:11:17,200
realmente, dependiendo de cuando la invoque, aparecerá un tipo de gameplay u otro.

155
00:11:17,590 --> 00:11:18,670
Pero entendéis esto?

156
00:11:18,670 --> 00:11:24,820
Es un proceso que las primeras veces es muy duro, porque esto implica un nivel de abstracción, implica

157
00:11:24,820 --> 00:11:32,110
un nivel de tener que crear una función que tiene un nombre, un apellido, tiene la cabecera y que

158
00:11:32,110 --> 00:11:32,700
hace algo.

159
00:11:33,770 --> 00:11:41,890
No entendéis esto se vale, pues una vez que lo tenemos, fijaros que ahora, tal cual lo acabo de hacer,

160
00:11:41,980 --> 00:11:49,360
lo único que he hecho ha sido refactorización reescribir el código que antes iba a piñón dentro del

161
00:11:49,370 --> 00:11:55,000
ADAPT en una función externa y que la estoy llamando dentro del ataque como antes.

162
00:11:55,420 --> 00:12:01,240
El resultado es que si ahora guardo y le doy al play lo mismo que ocurría antes, seguirá pasando.

163
00:12:01,240 --> 00:12:02,930
Ahora no nos lo habéis cargado.

164
00:12:02,950 --> 00:12:03,580
Tranquilos.

165
00:12:04,120 --> 00:12:10,510
Entonces, cuando yo vengo aquí al play le doy el mismo modo.

166
00:12:10,510 --> 00:12:14,170
Cuando le doy a la tecla S Seguirán bajando enemigos aleatoriamente.

167
00:12:14,200 --> 00:12:16,660
No lo habéis cargado, sólo lo habéis movido de sitio.

168
00:12:16,980 --> 00:12:17,260
Vale.

169
00:12:17,770 --> 00:12:22,900
Es como cuando cambias el cambias de armario y la ropa manga larga pasa a ser manga corta.

170
00:12:22,900 --> 00:12:23,470
Pues lo mismo.

171
00:12:23,470 --> 00:12:30,070
Antes teníais la ropa guardada aquí y ahora la tenéis guardada aquí abajo, pero es exactamente lo mismo.

172
00:12:30,970 --> 00:12:38,110
Ahora bien, todavía necesito escanear con la letra S, que no es lo que quiero, verdad?

173
00:12:38,980 --> 00:12:46,330
Por tanto, esta cosa que tenemos aquí ha estado muy bien mientras nos ha acompañado, pero no quiero

174
00:12:46,330 --> 00:12:47,650
escanear con la letra S.

175
00:12:47,660 --> 00:12:53,350
Por tanto, estas tres líneas de código pueden desaparecer si desaparecen.

176
00:12:54,320 --> 00:12:59,050
El update que hace ahora nada es totalmente inútil.

177
00:12:59,140 --> 00:13:00,880
Está vacío el cargo,

178
00:13:04,180 --> 00:13:10,660
pero yo quiero que se invoquen enemigos, por ejemplo, cada cada segundo o cada dos segundos o cada

179
00:13:10,660 --> 00:13:11,590
x segundos.

180
00:13:12,160 --> 00:13:19,380
Pues lo que vamos a hacer es lo siguiente vamos a crear aquí dos variables que va a ser Privat float

181
00:13:20,480 --> 00:13:23,560
start Dilthey dos segundos.

182
00:13:24,490 --> 00:13:28,480
Este será el tiempo mediante el cual al inicio no va a pasar nada.

183
00:13:29,340 --> 00:13:37,290
Dos segundos para concienciarnos de que empieza el juego y otra que será Float Spawn.

184
00:13:39,190 --> 00:13:45,220
Interval el intervalo de tiempo cada cuánto queréis generar un nuevo enemigo.

185
00:13:45,370 --> 00:13:47,920
Por ejemplo, 1,5 segundos.

186
00:13:50,680 --> 00:13:59,640
Gracias a estas dos variables que tenemos aquí, ahora podré esperar dos segundos al principio respirar,

187
00:13:59,680 --> 00:14:07,510
concienciarse, mostrar la pantalla de título, cualquier cosa que durante esos dos segundos no va a

188
00:14:07,510 --> 00:14:08,470
ocurrir nada.

189
00:14:09,540 --> 00:14:17,290
Y después de esos dos segundos, cada 1,5, cada 1,5, cada 1,5, cada 1,5, irá apareciendo un nuevo

190
00:14:17,290 --> 00:14:18,320
enemigo en pantalla.

191
00:14:18,960 --> 00:14:21,160
Entendéis para ello?

192
00:14:21,170 --> 00:14:22,850
Esto es realmente sencillo.

193
00:14:22,960 --> 00:14:23,890
No tiene ningún misterio.

194
00:14:23,950 --> 00:14:28,120
Sólo hay que llamar a la función Invoke Rising.

195
00:14:28,670 --> 00:14:29,100
Hay dos.

196
00:14:29,130 --> 00:14:31,330
Invoke es el primer Invoke.

197
00:14:31,510 --> 00:14:37,030
Es para invocar una función, para llamar a una función después de un intervalo de tiempo.

198
00:14:37,550 --> 00:14:39,370
Y el invoke repiten es la que queréis.

199
00:14:39,450 --> 00:14:45,790
Es invocar a la función repetidamente una vez tras otra, cada vez que se cumple un intervalo de tiempo.

200
00:14:46,320 --> 00:14:53,620
Veis que aquí os aparecen los parámetros nombre del método, tiempo y ratio o tiempo de repetición.

201
00:14:53,710 --> 00:14:58,030
Lo veis que necesita tres cosas para funcionar donde se involucre petting.

202
00:14:58,510 --> 00:15:00,280
Entre paréntesis le pasamos tres cosas.

203
00:15:00,310 --> 00:15:02,830
Primero, nombre del método, cómo se llama?

204
00:15:02,830 --> 00:15:05,560
El método que queréis invocar es honrando.

205
00:15:06,070 --> 00:15:09,910
Que para eso lo habéis creado entonces, entre comillas dobles de string.

206
00:15:10,390 --> 00:15:13,590
Con lo que hay es la palabra spawn random ánima.

207
00:15:14,260 --> 00:15:19,580
Esto simplemente es invocar a este método al spawn rando homãnima en coma.

208
00:15:20,230 --> 00:15:25,030
El segundo parámetro es el tiempo que hay que esperar hasta la primera llamada.

209
00:15:25,150 --> 00:15:32,080
Es lo que yo he llamado el estar Dilthey y el tercero y último es el ratio de repetición.

210
00:15:32,090 --> 00:15:37,290
El tiempo de repetición es un intervalo cada cuánto quiero llamar al método susodicha.

211
00:15:38,350 --> 00:15:45,400
Por tanto, fijaros Invoke, repiten al final del estar lo que va a hacer es cuando arranque el juego.

212
00:15:45,520 --> 00:15:53,480
La primera vez que arranque llamar al método Spawn Random Animal después del estar Dilthey.

213
00:15:53,530 --> 00:15:59,690
Después de dos segundos de cortesía, cada spawn interval cada uno coma cinco segundos.

214
00:16:00,160 --> 00:16:04,180
El resultado es guardáis y os vais al editor.

215
00:16:05,110 --> 00:16:09,640
Basta que le dais al play y no hacer absolutamente nada.

216
00:16:10,660 --> 00:16:15,700
Yo no voy a utilizar la tecla S Voice al Play, ahí están las 5 vacas.

217
00:16:15,700 --> 00:16:24,880
éstas deberían ir apareciendo, pues aparece un perro, aparece otro perro, aparece una cabra, otro

218
00:16:24,880 --> 00:16:26,710
perro, un alce.

219
00:16:27,310 --> 00:16:29,140
Ves que van apareciendo los enemigos?

220
00:16:29,540 --> 00:16:31,190
Queréis que salgan más a menudo?

221
00:16:31,540 --> 00:16:36,130
Recordad vuestro spawn manager tiene la variable hecho privada.

222
00:16:36,340 --> 00:16:39,040
Ya tiene la variable que he hecho privada.

223
00:16:39,080 --> 00:16:41,770
Spawn interval quereis que sea más difícil?

224
00:16:42,160 --> 00:16:50,200
Spawn interval lo bajáis a 0,1 segundos, entonces ahora cada 0,1 segundos después de los 2 iniciales

225
00:16:50,200 --> 00:16:52,360
de cortesía saldrá un bicho.

226
00:16:53,580 --> 00:16:57,730
Fijaros que ahora esto será un festival de animales.

227
00:16:57,850 --> 00:17:00,880
Después de los 2 segundos de cortesía, fijaros ahí.

228
00:17:01,060 --> 00:17:05,480
Empiezan a aparecer todos a saco y se convierte en un juego mucho más difícil.

229
00:17:05,530 --> 00:17:07,660
Por supuesto, lo entendéis?

230
00:17:08,530 --> 00:17:15,880
Si en particular dejadme hacer un poco de limpieza, porque aquí a ver que la variable, por ejemplo,

231
00:17:15,880 --> 00:17:18,400
Animal Index sea pública, ya no tiene ningún sentido.

232
00:17:18,490 --> 00:17:21,690
Es un contador que utilizo internamente para generar aleatoriamente.

233
00:17:21,700 --> 00:17:23,320
Puede ser privado private.

234
00:17:26,480 --> 00:17:33,140
Y lo contrario, a lo mejor no a pesar de que haya hecho privados.

235
00:17:33,260 --> 00:17:40,850
El tiempo de inicio y el spawn interval, a lo mejor estos dos los quereis ajustar desde el editor hasta

236
00:17:40,850 --> 00:17:42,440
que os quedan los valores que os gustan.

237
00:17:42,760 --> 00:17:49,220
Entonces esto serían los casos perfectos donde yo pondría el modificador que era Liset FIL para que

238
00:17:49,220 --> 00:17:52,940
aparezca en el editor de Unity y podáis serializada.

239
00:17:52,940 --> 00:17:58,960
Podáis ajustar el valor, incluso acordaros que vimos el líder el otro día en el Reintsch.

240
00:18:00,830 --> 00:18:01,820
Aquí lo podéis poner.

241
00:18:01,820 --> 00:18:07,520
Mira el estar Tilley que sea un mínimo de dos segundos y un máximo de 5 segundos, por ejemplo.

242
00:18:08,580 --> 00:18:10,070
Y el otro el spawn interval.

243
00:18:10,100 --> 00:18:18,890
Pues mira que pueda bajar hasta un mínimo de 0,1 segundos y máximo 3 segundos.

244
00:18:20,510 --> 00:18:27,200
Entonces fijaros que así vosotros podéis modificar ese spawn interval o podéis modificar el estar Dilthey

245
00:18:27,590 --> 00:18:34,970
y tener el campo a pesar de ser privado, a pesar que solo el spawn manager podrá acceder a él accesible

246
00:18:34,980 --> 00:18:37,850
en el editor para mover el líder en cuestión.

247
00:18:38,180 --> 00:18:44,870
El resultado es que si guardáis éste o vais al editor, aparece bueno.

248
00:18:44,930 --> 00:18:49,790
Desaparecerá el Animal Index, porque lo he puesto privado y deberían aparecer estos dos que acabamos

249
00:18:49,790 --> 00:18:53,060
de decir los dos días del inicio y del final.

250
00:18:53,140 --> 00:18:55,240
No veis el estar Dilthey, el Interval?

251
00:18:56,180 --> 00:18:57,290
Estáis aquí al play.

252
00:19:00,490 --> 00:19:06,010
Y una vez que lo tenéis después del Pilay, el espacio intervalo de las suyas.

253
00:19:06,440 --> 00:19:09,370
Y si lo queréis reducir o lo queréis aumentar o lo que sea.

254
00:19:09,430 --> 00:19:15,340
Aquí tenéis el líder, la mar de monos que se encargan de hacer todo esto por vosotros, como podéis

255
00:19:15,340 --> 00:19:15,670
ver aquí.

256
00:19:16,570 --> 00:19:23,530
Entonces aquí puedes jugar con los parámetros y cuando tenéis claro cada cuánto queréis esperar, cada

257
00:19:23,530 --> 00:19:26,650
cuántos enemigos queréis que salgan, etcétera, etcétera, etcétera.

258
00:19:27,130 --> 00:19:31,270
Aquí podéis dejar los valores finales en el código.

259
00:19:31,810 --> 00:19:37,270
Vale, pero bueno, que lo podéis dejar así con líder, porque os ayudará mucho a hacer a que sea más

260
00:19:37,270 --> 00:19:38,890
fácil la configuración.

261
00:19:39,250 --> 00:19:43,990
Fijaros que también a medida que vamos automatizando todo, primero, el programador tiene que hacer

262
00:19:43,990 --> 00:19:44,950
menos cosas de cada vez.

263
00:19:44,990 --> 00:19:47,320
Ya no tengo que pulsar la letra S para que salgan enemigos.

264
00:19:47,530 --> 00:19:48,700
Lo acabo de automatizar.

265
00:19:49,540 --> 00:19:56,740
Cada vez me puedo centrar más en cómo se tiene que jugar al juego que en el apartado técnico que lleva

266
00:19:56,800 --> 00:19:57,910
a la creación de la escena.

267
00:19:58,810 --> 00:19:59,590
Esto lo entendemos?

268
00:20:00,400 --> 00:20:03,720
Si preguntas, no?
