1
00:00:00,810 --> 00:00:05,820
Vamos a empezar por la posición mala, por la ubicación en la que se instancia los enemigos.

2
00:00:06,220 --> 00:00:12,240
Aquí habéis visto que cuando he llamado a instancias le he pasado el enemigo, le he pasado la posición

3
00:00:12,240 --> 00:00:12,960
y la rotación.

4
00:00:13,020 --> 00:00:19,530
Si me vais a permitir que lo que es la posición, en lugar de tenerla aquí, la saque fuera una variable.

5
00:00:19,620 --> 00:00:23,550
Fijaros, lo único que hago es dentro del género, un vector.

6
00:00:23,550 --> 00:00:24,120
3.

7
00:00:25,110 --> 00:00:32,020
Le voy a llamar a esto Spawn Box la posición de Spanic y la voy a igualar a lo que antes estaba dentro.

8
00:00:32,330 --> 00:00:35,560
A toda esta cosa igual o aquí ya está.

9
00:00:35,820 --> 00:00:40,510
Lo único que he hecho lo he sacado fuera en una variable para quebrar el instante.

10
00:00:40,580 --> 00:00:46,980
Tomé la espada pocas veces que le he sacado fuera en una variable es para que sea más fácil de ver los

11
00:00:46,980 --> 00:00:48,690
cambios que vamos a hacer.

12
00:00:49,620 --> 00:00:51,810
Fijaros que ahora aquí no hay nada de aleatoriedad.

13
00:00:51,900 --> 00:00:58,710
Esto es generar la posición donde va a aparecer el próximo enemigo.

14
00:01:00,150 --> 00:01:06,150
Esta posición hasta ahora fijaros que no es aleatorio, es predecible, siempre va a ser la misma.

15
00:01:08,340 --> 00:01:15,480
Lo que hay que hacer, hemos dicho, es aleatorio la coordenada X, que en lugar de ser cero esté entre

16
00:01:15,480 --> 00:01:16,740
un mínimo y un máximo.

17
00:01:17,910 --> 00:01:24,240
Si os acordáis, ayer ya vimos que para lo que era el control del player había unos límites entre los

18
00:01:24,240 --> 00:01:27,330
que nos podíamos mover cómodamente, que era de entre 15 y 15.

19
00:01:27,330 --> 00:01:27,960
Os acordáis?

20
00:01:29,070 --> 00:01:31,740
Aquí podemos usar el mismo enfoque.

21
00:01:32,100 --> 00:01:42,360
Podemos definir entre un mínimo y un máximo que queremos utilizar para el EXPANDING, de modo que aquí

22
00:01:42,360 --> 00:01:53,940
arriba definimos dos variables nos vamos a definir con una privat float y le voy a llamar spawn range

23
00:01:54,420 --> 00:01:55,650
en el eje de las X.

24
00:01:57,000 --> 00:02:03,750
Si ayer utilizábamos 15 para el valor de movimiento, aquí voy a ser un poco más generoso y voy a ir

25
00:02:03,750 --> 00:02:04,620
hasta 20.

26
00:02:05,190 --> 00:02:05,790
Por qué?

27
00:02:06,380 --> 00:02:10,590
Porque lo que quería era que el personaje se me quede en la pantalla, pero nadie me dice que no se

28
00:02:10,590 --> 00:02:13,240
pueda haber un trocito de enemigo en el borde de la pantalla.

29
00:02:13,850 --> 00:02:20,820
Entonces, a ser un poco más benévolo, voy a colocar Spawn Reiche en X igual a 20, que me servirá

30
00:02:20,820 --> 00:02:28,780
precisamente para establecer los límites e incluso si queréis, es un buen momento para establecer aquí

31
00:02:28,830 --> 00:02:41,640
privat float spawn position Z, que es la posición exacta, exacta, exacta en la que va a ver nuestro

32
00:02:41,820 --> 00:02:42,420
Spanic.

33
00:02:43,120 --> 00:02:53,170
Y aquí hay dos opciones o la ponéis a piñón 28 opción número 1 o no la configuras.

34
00:02:54,260 --> 00:03:00,690
Y en el START hacéis exactamente esto que he hecho una vez.

35
00:03:01,320 --> 00:03:08,550
Es decir, dentro del método estar, yo tomo el spawn position Z y lo igualo a la posición donde está

36
00:03:08,550 --> 00:03:09,210
el manager.

37
00:03:09,270 --> 00:03:14,100
Acordaros dis punto transform punto opposition punto z.

38
00:03:14,920 --> 00:03:17,190
Lo veis de este modo?

39
00:03:17,760 --> 00:03:22,680
Os vais a ahorrar cada vez tener que escribir esto que es muy largo y me da pereza porque todo esto

40
00:03:22,680 --> 00:03:24,060
ahora pasa a ser de spambots.

41
00:03:24,450 --> 00:03:25,550
Z Lo veis?

42
00:03:26,340 --> 00:03:32,610
El objetivo al final es intentar evitar accesos innecesarios a variables.

43
00:03:32,850 --> 00:03:35,150
Fijaros que aquí lo único que hago es spawn.

44
00:03:35,160 --> 00:03:42,090
Posición Z Guardo la posición zeta donde está mi manager y la guardo una vez.

45
00:03:43,080 --> 00:03:48,180
Luego esa variable la voy a utilizar constantemente dentro del ataque, como podéis observar aquí lo

46
00:03:48,180 --> 00:03:54,430
que pasa que solo la guardo una vez y así, en lugar de tenerle que decir al manager cada vez Oye dónde

47
00:03:54,450 --> 00:03:54,740
estás?

48
00:03:54,840 --> 00:03:55,590
Oye, dónde estás?

49
00:03:55,680 --> 00:03:56,300
Oye, dónde estás?

50
00:03:56,310 --> 00:03:57,690
No va a cambiar de posición el manager?

51
00:03:57,690 --> 00:03:58,540
El manager no se mueve.

52
00:03:59,220 --> 00:04:01,770
Guarda ese valor una vez y lo utilizáis.

53
00:04:02,340 --> 00:04:03,870
Esto es fundamental.

54
00:04:04,410 --> 00:04:10,950
La gran mayoría de chapuzas que conozco en Unity pasan por nunca cachear variables.

55
00:04:11,560 --> 00:04:12,900
Cachear las es guardarlas.

56
00:04:13,720 --> 00:04:20,250
Entonces, si vosotros siempre hacéis Transform Position Z, le estáis exigiendo al motor.

57
00:04:20,340 --> 00:04:26,760
Oye tío, dame el transform, dame el positions, dame la Z de este bicho y se lo estáis pidiendo en

58
00:04:26,760 --> 00:04:32,380
el Aboitiz se lo estáis pidiendo 60 veces por segundo o más si lo cacheda en una variable.

59
00:04:33,090 --> 00:04:36,000
El motor ya no necesita pedirle al manager dónde estás?

60
00:04:36,060 --> 00:04:36,580
Dónde estás?

61
00:04:36,600 --> 00:04:37,070
Ya lo tienen.

62
00:04:37,080 --> 00:04:42,270
Esta variable y esto es mucho más barato, es mucho más económico y gasta mucho menos recursos.

63
00:04:42,450 --> 00:04:46,740
Batería y CPU a costa de espacio en disco.

64
00:04:47,430 --> 00:04:55,470
Siempre os vais a probar, a probar, siempre vais a encontrar esta dicotomía que es espacio y performance

65
00:04:55,790 --> 00:04:56,260
siempre.

66
00:04:56,760 --> 00:04:59,180
Si queréis que algo sea rápido, no?

67
00:04:59,930 --> 00:05:01,770
En disco, porque leer en disco es pesado.

68
00:05:02,460 --> 00:05:06,540
guardáis muchos datos en disco, pues no los podés tener en tiempo real.

69
00:05:06,750 --> 00:05:08,610
Siempre es una mezcla entre estas dos cosas.

70
00:05:08,940 --> 00:05:13,470
Si vosotros queréis acceder a la última posición, a la última posición, porque necesitáis mucha precisión,

71
00:05:13,980 --> 00:05:16,390
vais a necesitar de muchos recursos, de mucha RAM.

72
00:05:17,040 --> 00:05:20,400
A lo mejor no con un objeto, pero cuando tengáis 20, 50, 000.

73
00:05:20,820 --> 00:05:26,300
Si entonces siempre que podáis cachear valores de una variable, como he hecho aquí con este spawn position

74
00:05:26,340 --> 00:05:26,710
CETA.

75
00:05:27,030 --> 00:05:31,670
Esto es crítico y de hecho, si alguna vez os presentáis al examen de Unity.

76
00:05:31,770 --> 00:05:35,970
Muchas de las preguntas acerca de este tipo de performance.

77
00:05:36,900 --> 00:05:39,000
Cuál de los siguientes códigos es más optimo?

78
00:05:39,270 --> 00:05:46,080
Siempre es el que evita acceder a cosas externas a cosas de fuera dentro de una de quien no ha podido

79
00:05:46,080 --> 00:05:50,970
cachear en una variable, como hemos hecho nosotros en el estar siempre va a ser mucho más óptimo que

80
00:05:50,970 --> 00:05:56,460
el otro o siguen nombrando muchas cosas para mejorar la calidad óptima de vuestro código?

81
00:05:56,790 --> 00:05:58,020
Esto es una de las básicas.

82
00:05:58,350 --> 00:06:05,490
Cualquier cosa que necesites acceder, cualquier cosa que necesitáis consultar siempre en una variable

83
00:06:05,780 --> 00:06:11,100
en el estar y hacer uso de esa variable, siempre es mucho más barato.

84
00:06:11,160 --> 00:06:14,270
Es más económico que cada vez que pases por el español.

85
00:06:14,550 --> 00:06:17,520
Preguntar dónde estás Mãnager, dónde estás Mãnager, dónde estás?

86
00:06:17,520 --> 00:06:17,890
Mandaria?

87
00:06:18,210 --> 00:06:19,860
Queda claro esto es muy importante.

88
00:06:21,750 --> 00:06:27,330
Vale, pues ahora que tenemos el respawn position zeta, la que no tenemos, está claro, es la X para

89
00:06:27,330 --> 00:06:28,590
generar la X.

90
00:06:28,680 --> 00:06:34,380
En este caso lo que vamos a usar es una variable random range.

91
00:06:34,510 --> 00:06:42,240
La variable random range sirve para obtener números aleatorios, entonces la X ahora pasará a ser un

92
00:06:42,240 --> 00:06:47,010
random con la R mayúscula punto salud.

93
00:06:49,340 --> 00:06:56,370
Y hay que indicar aquí el rango entre qué número más pequeño y número más alto queréis obtener este

94
00:06:56,370 --> 00:06:57,480
valor aleatorio.

95
00:06:58,620 --> 00:07:02,340
De hecho, recordad que yo he colocado aquí Les Pawn Ranger X, que era 20.

96
00:07:03,330 --> 00:07:07,560
La idea de ese 20 es que el número laudatorios se genere entre 20 y 20.

97
00:07:08,310 --> 00:07:19,050
Por tanto, mi random range será desde menos Spawn Reiche X y Spawn Rains X hasta Spawn Range X.

98
00:07:20,530 --> 00:07:21,030
Lo veis?

99
00:07:22,620 --> 00:07:30,180
Por tanto, fijaros, la X será un número aleatorio entre menos spawn 20x y spawn raid x.

100
00:07:30,270 --> 00:07:38,850
Entre nosotros un número entre 20 y 20 la Y griega será cero, no tendrá la altura y el spawn position

101
00:07:38,850 --> 00:07:42,650
Z será la que estuviera al manager al inicio.

102
00:07:43,170 --> 00:07:48,120
Fijaros también que aquí yo podría haber puesto Random Reiche entre 20 y 20.

103
00:07:48,500 --> 00:07:51,390
Tal vez es más claro ahora, pero no es escalable.

104
00:07:51,420 --> 00:07:53,850
El día de mañana el escenario cambia.

105
00:07:53,880 --> 00:07:56,610
Queréis que el tamaño de Spanic sea mayor o menor?

106
00:07:56,780 --> 00:08:01,770
Tener que venir a buscar el 20, cambiarlo por otro número, mientras que en este caso utilizáis a Spawn

107
00:08:01,790 --> 00:08:03,000
Ranger X?

108
00:08:03,530 --> 00:08:04,830
Pues es exactamente lo mismo.

109
00:08:06,480 --> 00:08:06,710
Dime

110
00:08:10,260 --> 00:08:14,820
si necesita de una librería que en teoría la habéis añadido automáticamente.

111
00:08:15,400 --> 00:08:20,610
Pues si no se os añade automáticamente, es aquí un punto random.

112
00:08:23,460 --> 00:08:25,350
En teoría debería salirte automáticamente.

113
00:08:25,620 --> 00:08:31,920
Lo que pasa que como hay varias librerías random, puede ser que Setelich el sistema Unity.

114
00:08:32,520 --> 00:08:36,060
Si es el random de System o el random de Unity Engine.

115
00:08:36,650 --> 00:08:42,780
Entonces, en este caso, ante la duda, cuando no lo importas te debería dar un error y si no te lo

116
00:08:42,780 --> 00:08:44,580
da es porque has importado la que no era.

117
00:08:45,470 --> 00:08:46,410
Es que a mi no me lo da.

118
00:08:47,100 --> 00:08:48,220
No me da ningún tipo de error.

119
00:08:48,630 --> 00:08:53,360
Esto es porque él entiende que por defecto, si yo no le digo nada, es el random de Unity Engine.

120
00:08:54,480 --> 00:08:58,500
El problema está cuando aquí me ha importado porque le ha dado la gana.

121
00:08:59,700 --> 00:09:05,700
System System tiene una clase random que no es la que queremos y ésta es la que da problemas.

122
00:09:05,700 --> 00:09:06,850
De hecho, ves que aquí está en rojo.

123
00:09:06,870 --> 00:09:10,020
Ahora hice referencia ambigua.

124
00:09:10,200 --> 00:09:15,330
No sé si es el random de sistema o el random de Unity Engine, como yo he importado y Unity ya ni ha

125
00:09:15,330 --> 00:09:16,340
importado System.

126
00:09:16,470 --> 00:09:17,780
Ambos tienen su random.

127
00:09:18,580 --> 00:09:21,210
El que nosotros utilizamos siempre es el del motor.

128
00:09:21,480 --> 00:09:23,160
El sistema lo vais a usar muy poco.

129
00:09:24,030 --> 00:09:30,250
El sistema es cosa de sistema operativo, acceso a carpetas, accesos a caché, ficheros, visualización,

130
00:09:30,300 --> 00:09:31,460
serialización y demás.

131
00:09:32,250 --> 00:09:35,940
Lo normal es que el 99 por ciento utilizáis el motor, el Unity.

132
00:09:36,660 --> 00:09:39,970
Por tanto, en tu caso, si te sale este error, borra lo que pone.

133
00:09:40,070 --> 00:09:45,380
Ellos insisten y os insisten y ya te debería pillar automáticamente el de Unity Engine.

134
00:09:45,600 --> 00:09:52,330
Si no, el truco que hace y Unity es indicar using la función random.

135
00:09:52,440 --> 00:09:53,700
La que habéis visto antes.

136
00:09:54,290 --> 00:10:00,420
E igual hay Unity ya en punto random.

137
00:10:01,980 --> 00:10:03,420
Esto se llama Nîmes países.

138
00:10:05,930 --> 00:10:07,530
Carota había cogido la de System.

139
00:10:08,340 --> 00:10:13,740
En general, esto de aquí los países son muy útiles, porque si tú quieres que la clase random se llame

140
00:10:13,740 --> 00:10:15,600
random, se llame Antonio Banderas.

141
00:10:17,790 --> 00:10:19,980
Tú lo que haces es mirar mi librería.

142
00:10:19,980 --> 00:10:25,800
Antonio Banderas será ya un punto random, en cuyo caso aquí, en lugar de invocar a Random, podríamos

143
00:10:25,800 --> 00:10:27,670
utilizar a nuestro Antonio Banderas.

144
00:10:29,250 --> 00:10:30,660
No tiene ningún sentido, pero se podría.

145
00:10:32,590 --> 00:10:34,620
Podríais pasar todo el motor a castellano?

146
00:10:35,330 --> 00:10:44,100
Podríais poner using aleatorio igual a esta cosa y hacer aleatorio y cambiar raich por rango, etcétera,

147
00:10:44,100 --> 00:10:45,990
etcétera, etcétera y programar en castellano.

148
00:10:46,290 --> 00:10:47,940
Si no lo hace, nadie lo podría hacer.

149
00:10:49,080 --> 00:10:51,200
Que sepáis que esto se llama Naima Países.

150
00:10:51,510 --> 00:10:53,830
Las librerías se llaman Nîmes países.

151
00:10:53,960 --> 00:11:02,100
Entonces yo lo dejo en Rando Punto Rains y así vais a tener que cada vez que se genere un enemigo lo

152
00:11:02,100 --> 00:11:06,600
hará en una posición aleatoria X en particular.

153
00:11:06,600 --> 00:11:15,030
Fijaros que este vector que hemos hecho aparte lo único que hacemos es luego utilizarlo para la posición

154
00:11:15,030 --> 00:11:15,750
del Spanic.

155
00:11:16,020 --> 00:11:16,560
Lo veis aquí?

156
00:11:16,680 --> 00:11:18,060
Solo lo utilizamos para esto.

157
00:11:18,690 --> 00:11:19,710
Para nada más.

158
00:11:20,160 --> 00:11:27,870
Realmente entonces en una primera fase, si ahora volvemos aquí y pulsamos varias veces la tecla S,

159
00:11:28,620 --> 00:11:33,690
cada vez el enemigo que es Pawnee debería hacerlo en una coordenada X diferentes.

160
00:11:33,720 --> 00:11:36,420
Estos son los cuatro que se generaban al inicio.

161
00:11:37,070 --> 00:11:44,580
Si ahora pulso la mesa de la BAKAR, no sé dónde, en medio saco otro, a ver dónde me sale la siguiente

162
00:11:44,580 --> 00:11:47,510
Bauçà no me sale.

163
00:11:48,690 --> 00:11:50,800
Si no me sale es que se ha salido de la pantalla correcto.

164
00:11:51,450 --> 00:11:52,620
Está fuera de la pantalla.

165
00:11:53,750 --> 00:11:57,870
Voy a generar unas cuantas para que veáis que no os engaño, lo veis, que cada uno sale donde le da

166
00:11:57,870 --> 00:11:58,170
la gana.

167
00:11:58,170 --> 00:12:00,010
Ahora salen aleatoriamente.

168
00:12:00,510 --> 00:12:01,680
Parece una estampida.

169
00:12:03,330 --> 00:12:05,010
Entonces, cuando púlsares aquí la s.

170
00:12:05,100 --> 00:12:09,930
La idea es esa que cada vez os van a salir los animales en una posición u otra.

171
00:12:10,950 --> 00:12:12,270
Lo que pasa que todos son el mismo.

172
00:12:12,270 --> 00:12:17,490
No hemos arreglado la mitad de la aleatoriedad, que era la aleatoriedad de la posición.

173
00:12:18,270 --> 00:12:26,010
Ahora que os he contado esto, fijaros en un pequeño detalle la clase random range que acabo de utilizar.

174
00:12:27,120 --> 00:12:29,300
Dejadme que saque en una variable más.

175
00:12:30,180 --> 00:12:37,600
Dejadme poner aquí x RAM y éste X RAM será un float x RAM igual a lo que había dentro.

176
00:12:37,680 --> 00:12:43,020
Sólo le he sacado en una variable con una variable por un motivo este random punto.

177
00:12:43,030 --> 00:12:44,660
Raines cuando lo escribís.

178
00:12:45,040 --> 00:12:53,340
Veis que la propia documentación me dice si me das un float mínimo y me das un flou máximo, yo te voy

179
00:12:53,340 --> 00:12:57,750
a devolver un flou aleatorio entre el mínimo y el máximo.

180
00:12:57,810 --> 00:13:01,800
Inclusive los dos lo veis mi entrada.

181
00:13:02,740 --> 00:13:04,730
El spawn es un número float.

182
00:13:05,160 --> 00:13:13,050
Si por tanto, como mi pawn reinicié x es un número decimal, le puedo poner aquí la f.

183
00:13:13,050 --> 00:13:21,230
Si lo queréis enfatizar más, la respuesta a la posición aleatoria será un número con decimales entre

184
00:13:21,240 --> 00:13:23,550
menos 20 y 20 se guardará en un flop.

185
00:13:23,880 --> 00:13:24,600
Esto lo veis.

186
00:13:25,620 --> 00:13:29,900
Sin embargo, el Random Reintsch tiene otra cosa muy útil.

187
00:13:32,710 --> 00:13:41,110
Tiene un segundo método aquí abajo que pone Integer Min Integer Max y devuelve un número entero, es

188
00:13:41,110 --> 00:13:47,290
decir, si lo que le dáis son números con decimales, él os genera un número aleatorio con decimales.

189
00:13:48,490 --> 00:13:56,260
Si le dais un número entero, él os genera un número entero aleatorio entre el mínimo y el máximo.

190
00:13:57,100 --> 00:14:01,140
De hecho, el mínimo e inclusive el máximo creo recordar que no lo mete.

191
00:14:03,610 --> 00:14:06,060
No me cabe en teoría.

192
00:14:07,180 --> 00:14:15,580
Por tanto, cuando quiero seleccionar el animal index que tenía por aquí, que es lo que tengo que hacer,

193
00:14:15,910 --> 00:14:21,710
pues es muy simple este animal index tiene que ser un número aleatorio entre el mínimo y el máximo disponibles.

194
00:14:21,730 --> 00:14:22,250
Correcto.

195
00:14:23,050 --> 00:14:28,940
Por tanto, si pulsamos la tecla S hemos generado la posición aleatoria.

196
00:14:29,110 --> 00:14:34,990
Pero es que ahora además podemos generar el animal index aleatorio porque el animal index es un número

197
00:14:34,990 --> 00:14:42,610
entero y por tanto, lo único que debo hacer es asignarlo a Random Reintsch, lo que en este caso para

198
00:14:42,610 --> 00:14:45,670
el Random Range no voy a utilizar números con decimales.

199
00:14:45,700 --> 00:14:49,000
Voy a utilizar números enteros entre cero.

200
00:14:49,360 --> 00:14:53,200
Y cuál es el último animal que puedo general que puedo generar?

201
00:14:55,240 --> 00:15:00,360
El que está en la posición máxima de la raíz y la raíz tiene ocho posiciones, el octavo, octavo,

202
00:15:00,360 --> 00:15:00,760
menos uno.

203
00:15:01,600 --> 00:15:10,800
Por tanto, aquí hacemos el Spanic entre cero y como era esto, enemigos punto lek.

204
00:15:11,800 --> 00:15:17,560
Entonces fijaros que aquí Animal Index va a ser un número entre cero y Emmys.

205
00:15:17,610 --> 00:15:20,280
Leng nunca va a llegar al último, será menor stricto.

206
00:15:21,150 --> 00:15:24,160
Y cómo le estáis generando vosotros por código?

207
00:15:24,860 --> 00:15:29,250
Este CHEC que he puesto antes manual ya no tiene sentido.

208
00:15:29,500 --> 00:15:36,220
Si yo genero un número aleatorio entre cero y mis leng, es posible que el número generado sea negativo.

209
00:15:36,690 --> 00:15:39,810
No es posible que el número se pase de enemigo?

210
00:15:40,260 --> 00:15:46,990
No, porque el propio método me va a devolver un número entero, porque las entradas son enteras entre

211
00:15:46,990 --> 00:15:49,180
cero y la dimensión del número de enemigos.

212
00:15:49,450 --> 00:15:55,390
Por tanto, aquel FLAC que habíamos puesto nosotros este CHEC, si el animal era mayor o igual que cero

213
00:15:55,390 --> 00:15:59,120
menor que la longitud, me sobra si me sobra Elif.

214
00:15:59,440 --> 00:16:02,010
Por supuesto, me sobra el asociado a S.I.

215
00:16:02,080 --> 00:16:09,310
Porque nunca voy a caer en este error y esto significa que lo que antes eran variables gestionadas por

216
00:16:09,310 --> 00:16:14,650
el programador, ahora son automáticamente manejadas por el código.

217
00:16:14,950 --> 00:16:21,610
Yo no tengo que hacer absolutamente nada porque es el propio Código quien generará el índice aleatorio

218
00:16:22,030 --> 00:16:22,810
del enemigo.

219
00:16:24,370 --> 00:16:32,230
Random Range aplicado a flows os devuelve un número float aleatorio, un número con decimales perfecto

220
00:16:32,230 --> 00:16:36,790
para posiciones rotaciones escala random range.

221
00:16:37,180 --> 00:16:42,370
Utilizando números enteros me devuelve una posición entera ideal para posiciones.

222
00:16:43,320 --> 00:16:44,080
Entendéis esto?

223
00:16:44,560 --> 00:16:50,230
Por ejemplo, los típicos juegos donde al final del nivel te dan un minijuego que te puedes seleccionar

224
00:16:50,230 --> 00:16:51,370
una caja u otra.

225
00:16:51,610 --> 00:16:55,630
En una caja no hay vidas, en una hay una vida en una y cinco vidas.

226
00:16:56,020 --> 00:17:00,190
El número de vidas puede ser un número aleatorio obtenido con un random raich, por ejemplo.

227
00:17:00,840 --> 00:17:07,800
Vale, pues esto significa que si guardamos, venimos aquí y le damos al play.

228
00:17:08,410 --> 00:17:12,910
Fijaros cada vez que le dé a la letra s me va a cambiar el animal.

229
00:17:12,970 --> 00:17:15,610
De hecho, ves que aquí por defecto pone Animal Index Zero.

230
00:17:16,090 --> 00:17:18,620
Cada vez que le dé me generará un animal diferente.

231
00:17:19,300 --> 00:17:24,280
El cero cero uno uno dos cero.

232
00:17:24,520 --> 00:17:25,570
Voy a ir generando.

233
00:17:25,930 --> 00:17:30,610
Vais a ver que el número se va moviendo en la cajita, lo veis y veis que los animales que vienen cada

234
00:17:30,610 --> 00:17:31,570
vez son diferentes.

235
00:17:32,140 --> 00:17:35,470
La posición es aleatoria y los animales son todos diferentes.

236
00:17:35,520 --> 00:17:38,330
Lo veis que cada vez aparece uno totalmente diferente al anterior.

237
00:17:39,920 --> 00:17:47,590
Si por tanto dos niveles de aleatoriedad uno en el tipo de enemigo y otro en la posición en la que se

238
00:17:47,590 --> 00:17:49,780
instancia el enemigo.

239
00:17:50,110 --> 00:17:51,700
Pero esto sí que es muy importante.

240
00:17:51,850 --> 00:17:53,490
Porque tú que me habías pedido?

241
00:17:53,890 --> 00:18:00,030
Oye, yo quiero hacer un juego de naves donde los meteoritos aparezcan en posiciones aleatorias o no

242
00:18:00,030 --> 00:18:06,520
sé qué obtienes una posición aleatoria en un borde de la pantalla o en otro borde que vaya en dirección

243
00:18:06,520 --> 00:18:11,180
al enemigo o que vaya en dirección hacia abajo, a la izquierda, a la derecha o dirección también aleatoria.

244
00:18:11,740 --> 00:18:12,940
Son dos random rindiese.

245
00:18:13,000 --> 00:18:19,330
Al final tú decides los rangos en cuestión e incluso tengo cinco tipos de asteroides, 10 tipos de asteroides

246
00:18:19,330 --> 00:18:20,470
o naves o lo que sea.

247
00:18:20,920 --> 00:18:22,710
Eliges una u otra aleatoriamente.

248
00:18:22,740 --> 00:18:27,040
Del mismo modo que he hecho yo aquí con el Animal Index, fijaros que lo que os enseño son técnicas

249
00:18:27,040 --> 00:18:28,630
genéricas de desarrollo de videojuegos.

250
00:18:28,630 --> 00:18:30,900
Aquí lo hacemos con un con un videojuego que es.

251
00:18:32,240 --> 00:18:36,990
Pero que este código tú lo copias, lo pegas en tu videojuego, lo adaptas.

252
00:18:37,010 --> 00:18:41,270
Como hemos visto, creas tu arráiz de cosas insustanciales y esto funciona.

253
00:18:42,110 --> 00:18:46,850
Es mas, os acordais que antes os he dicho si quereis que un enemigo se genere muchas mas veces que

254
00:18:46,850 --> 00:18:48,520
el otro, arrastrarlo a un monton.

255
00:18:48,990 --> 00:18:54,340
Voy a poner aqui 40 al poner 40 el ultimo se ha copiado muchas veces lo veis?

256
00:18:54,750 --> 00:18:59,900
Entonces como veis hay mucha probabilidad de que salga un perro y bastante, mucho menos que salga alguna

257
00:18:59,900 --> 00:19:00,860
cosa que no sea un perro.

258
00:19:01,070 --> 00:19:01,480
Lo veis?

259
00:19:02,000 --> 00:19:08,120
Si le doy al play, cada vez me va a generar un bicho aleatorio entre 0 y 40.

260
00:19:08,840 --> 00:19:14,690
Pero claro, como la gran mayoría son perros, pues fijaros el 9, el 37, el 38, el 22, el 12, el

261
00:19:14,690 --> 00:19:23,240
17 al 19, el 17, el 3, el 39, generando veís que casi todos son perros porque hay muchos perros

262
00:19:23,600 --> 00:19:25,500
y si aparecen alguno del otro.

263
00:19:25,730 --> 00:19:30,500
Pero claro, por cada uno de los otros la probabilidad de sacar un perro es 10 veces más y esto lo podéis

264
00:19:30,500 --> 00:19:35,440
hacer sobretodo si algún enemigo es más rápido que otro, es más fuerte que otro.

265
00:19:35,450 --> 00:19:42,710
Tiene algunas características para cambiar el gameplay en un juego estilo orcos de Mordor o similares,

266
00:19:42,850 --> 00:19:48,260
pues los orcos más débiles podrían ser los más frecuentes y a medida que son más fuertes, más complicados,

267
00:19:48,500 --> 00:19:51,410
que sea más probable encontrarte un bicho de esas características.

268
00:19:52,440 --> 00:19:53,170
Lo entendemos.

269
00:19:54,030 --> 00:19:56,000
Si vale, perfecto.

270
00:19:56,000 --> 00:20:02,660
Entonces os dejo esto con 4 enemigos como antes y ya tenemos oleadas de enemigos, ya tenemos balas,

271
00:20:02,750 --> 00:20:06,080
tenemos muchas cosas, todavía nos falta alguna cosita.
