1
00:00:00,950 --> 00:00:06,450
Bueno, ahora ya tenemos aquí la colección de los animales están guardados, acordaros dentro de esta

2
00:00:06,450 --> 00:00:13,920
variable enemigos y aquí en principio no hacemos uso todavía de nada de lo que vamos a hacer es lo siguiente

3
00:00:14,050 --> 00:00:17,400
el estar me lo voy a cargar porque no hay ningún tipo de configuración que hacer.

4
00:00:17,640 --> 00:00:22,800
De momento aún no hemos usado el estar, ya lo sé, ya aparecerán momentos en los que vayamos a utilizar

5
00:00:23,710 --> 00:00:23,920
aquí.

6
00:00:23,940 --> 00:00:34,080
Lo que voy a hacer es lo siguiente Fijaros, voy a declarar una variable public y le voy a llamar Animal

7
00:00:35,010 --> 00:00:38,130
Index, que es Animal Index.

8
00:00:38,550 --> 00:00:45,840
Es la posición dentro de la raíz del objeto que queréis generar del animal que queréis que se genere,

9
00:00:45,840 --> 00:00:46,710
que es pawnee.

10
00:00:47,520 --> 00:00:55,140
Está claro que tal cual está escrito ahora, Animal Index debe ser un número que esté aquí dentro,

11
00:00:55,240 --> 00:01:02,940
no en general en casi todos los lenguajes de programación los arráiz, las listas, las colecciones

12
00:01:02,940 --> 00:01:06,630
empiezan en cero y acaban en el número de elementos menos 1.

13
00:01:06,840 --> 00:01:09,660
Por ejemplo, ahora en Emmys tiene cuatro elementos.

14
00:01:10,800 --> 00:01:11,850
El primero es el cero.

15
00:01:12,600 --> 00:01:13,640
El segundo es el 1.

16
00:01:13,830 --> 00:01:16,620
El tercero es el 2 y el cuarto es el 3.

17
00:01:17,420 --> 00:01:21,420
Es como siempre, siempre se empieza en cero.

18
00:01:21,600 --> 00:01:24,300
Y si hay cuatro objetos, el último es el tercero, nunca es el cuarto.

19
00:01:25,260 --> 00:01:30,780
Por tanto, qué condición tiene que cumplir la variable Animal Index?

20
00:01:31,080 --> 00:01:36,000
Para estar seguro que hay un animal tiene que cumplir dos cosas tiene que ser mayor o igual que cero.

21
00:01:36,090 --> 00:01:37,380
No puede ser un número negativo.

22
00:01:37,660 --> 00:01:41,430
Si buscáis cuál es el animal en posición menos 7 os va a dar un error.

23
00:01:42,700 --> 00:01:47,380
Y si intentáis buscar más allá del tamaño del del éste también nos va a dar error.

24
00:01:48,210 --> 00:01:52,440
Es decir, si yo tengo cuatro animales que son el cero, el 1, el 2 y el 3.

25
00:01:52,710 --> 00:01:54,700
Y pregunto por el 4?

26
00:01:54,870 --> 00:01:56,160
O pregunto por el 8?

27
00:01:56,250 --> 00:01:57,290
Me va a dar error también?

28
00:01:57,930 --> 00:02:00,690
Por tanto, hay dos cosas que siempre deben ocurrir.

29
00:02:01,320 --> 00:02:08,880
El Animal Index tiene que ser mayor o igual que cero y menor estricto que el tamaño de la raya.

30
00:02:09,390 --> 00:02:18,120
Por tanto, lo que voy a hacer aquí va a ser lo siguiente en el Android voy a chequear si Animal Index

31
00:02:18,900 --> 00:02:28,370
es mayor o igual que cero y Animal Index es menor que 4.

32
00:02:29,970 --> 00:02:30,990
El animal existe.

33
00:02:33,620 --> 00:02:34,990
Qué pasa que ahora estoy en la misma?

34
00:02:36,280 --> 00:02:42,310
Si alguien dice y añade un quinto animal, el programador tiene que venir a buscar este cuadro y cambiarlo

35
00:02:42,310 --> 00:02:42,790
por un disco.

36
00:02:43,280 --> 00:02:46,320
Y si me añade 7 más, pues tengo que venir y cambiarlo acorde a ello.

37
00:02:46,930 --> 00:02:50,890
Entonces está claro que tener valores a piñón aquí en medio es una muy mala práctica.

38
00:02:50,920 --> 00:02:52,990
Yo creo que ya os ha quedado medianamente claro.

39
00:02:53,710 --> 00:02:56,230
El cero no va a ser un problema porque hace el acero.

40
00:02:56,230 --> 00:02:58,360
Es la primera posición, siempre empiezan en cero.

41
00:02:58,870 --> 00:03:00,660
El problema es dónde va a acabar el array?

42
00:03:01,200 --> 00:03:07,750
Pues en este caso, para dinamizar el número de elementos que hay dentro de una raíz, utilizaremos

43
00:03:07,750 --> 00:03:09,370
la variable NX.

44
00:03:09,610 --> 00:03:17,820
Es la variable de array punto y aquí veis que hay una propiedad que se llama Leng Lence longitud, donde

45
00:03:17,860 --> 00:03:22,210
se había expuesto cuatro Emmys punto Legg ahora vale cuatro.

46
00:03:22,900 --> 00:03:24,580
Cuando haya uno más valdrá cinco.

47
00:03:25,960 --> 00:03:26,660
Lo entendéis?

48
00:03:27,760 --> 00:03:35,590
Evidentemente aquí podríamos poner un enlace que se ejecutará en caso contrario y que fuera de back

49
00:03:36,430 --> 00:03:43,630
to log el número del enemigo a instancia no existe.

50
00:03:45,640 --> 00:03:49,030
Sería un mensaje de ayuda para nosotros, sólo eso.

51
00:03:49,300 --> 00:03:53,820
De hecho, además del de BAC Punto LOC, hay otros de Bags.

52
00:03:53,880 --> 00:03:54,550
Hayun de VAC.

53
00:03:55,090 --> 00:03:55,830
Punto.

54
00:03:56,470 --> 00:03:58,590
Error, error.

55
00:03:58,690 --> 00:04:01,450
Lo que error y error.

56
00:04:01,570 --> 00:04:04,480
Lo que pasará será que el mensaje que salga será de color rojo.

57
00:04:04,480 --> 00:04:06,870
Acordaros ese rojo que plone error.

58
00:04:08,380 --> 00:04:15,700
Entonces si vais a instancias un enemigo a instancia, un animal que no existe.

59
00:04:15,790 --> 00:04:19,030
Queréis el que está en una posición no adecuada?

60
00:04:19,450 --> 00:04:21,520
Caéis en este ejemplo?

61
00:04:21,990 --> 00:04:22,720
Me vengo aquí.

62
00:04:23,520 --> 00:04:27,970
Si yo tengo que instancia cero, vais a ver que aquí no aparece ningún error.

63
00:04:28,000 --> 00:04:34,240
En teoría ves que no hay errores, pero qué pasa cuando quieren instancias?

64
00:04:34,300 --> 00:04:39,430
El número ocho, el número del enemigo a instancia no existe.

65
00:04:39,970 --> 00:04:44,140
Veis que pone las veces que me ha saltado el error por aquí y veis que me aparece como error de color

66
00:04:44,140 --> 00:04:44,650
rojo.

67
00:04:45,100 --> 00:04:48,250
Por eso hay varios balestra, hay varios blogs.

68
00:04:48,450 --> 00:04:54,460
El normal es el log, pero está el loco error, el exception, el log forma log warning.

69
00:04:54,940 --> 00:04:58,420
Los tres acordaros son el log, que es para un mensaje normal y corriente.

70
00:04:59,290 --> 00:05:04,090
El warning, que es la advertencia de color amarillo, es en plan algo ha fallado, pero el juego puede

71
00:05:04,090 --> 00:05:10,810
seguir y el lock error normalmente nos lo reservamos cuando queremos hacer notar que este error podría

72
00:05:10,810 --> 00:05:11,620
ser muy grave.

73
00:05:11,740 --> 00:05:16,660
Por ejemplo, no se pueden distanciar más enemigos en las aserciones.

74
00:05:16,720 --> 00:05:19,880
Las excepciones y demás las veremos más adelante.

75
00:05:20,260 --> 00:05:25,720
Sirven para ser capaces de trocear la razón por la cual ha habido un problema.

76
00:05:26,770 --> 00:05:29,680
Entonces, las aserciones y las excepciones los veremos más adelante.

77
00:05:30,010 --> 00:05:34,180
Los importantes son el normal, el error y el warmi o incluso el format.

78
00:05:34,210 --> 00:05:37,990
Cuando queréis formatear la salida con alguna cosa adicional?

79
00:05:38,740 --> 00:05:46,210
Bueno, pues en este caso el valor de la variable animal index tiene que estar entre cero y Emmys.

80
00:05:46,270 --> 00:05:57,100
Legg Y aquí lo que vamos a hacer es lo siguiente si el animal existe, lo que vamos a hacer es if se

81
00:05:57,100 --> 00:05:59,160
pulsa una tecla que.

82
00:06:02,730 --> 00:06:03,870
No porque es menos estricto.

83
00:06:06,340 --> 00:06:16,730
Si se pulsa la tecla de instancias enemigos de escanear enemigos, en nuestro caso será imput punto

84
00:06:16,890 --> 00:06:24,160
g.t y voy a usar Get It Down para evitar que si lo pulsas durante 10 frames o salgan 10 enemigos en

85
00:06:24,160 --> 00:06:24,850
el mismo sitio.

86
00:06:25,810 --> 00:06:33,520
If Input Get Down y en este caso vamos a utilizar el casco de punto S la letra S de vuestro teclado.

87
00:06:34,720 --> 00:06:38,880
Vamos a distanciar el enemigo que está en la posición Animal Index.

88
00:06:39,280 --> 00:06:44,530
Para ello lo que vamos a hacer es lo siguiente acordaros el método 10 que ya utilizado para la bala.

89
00:06:45,060 --> 00:06:46,540
Qué objeto voy a instancias?

90
00:06:47,140 --> 00:06:51,980
Pues de enemigos de todos los enemigos que hay dentro de la RAI.

91
00:06:52,450 --> 00:06:59,500
Es que el que está en la posición animal index de enemigos recupero dentro del corchete el que está

92
00:06:59,500 --> 00:07:04,330
en posición animal index a Animal Index.

93
00:07:04,960 --> 00:07:07,860
Ese es el objeto donde lo voy a instancias.

94
00:07:08,320 --> 00:07:09,760
De momento lo voy a hacer a piñón.

95
00:07:10,780 --> 00:07:24,760
La posición va a ser niuq vector 3 que va a ser 0 en X Cervelli y arriba 28 en Z vale, eso es donde

96
00:07:24,760 --> 00:07:30,460
se va a instancia y la rotación en este caso recordad que yo ya he rotado todos los animales para que

97
00:07:30,460 --> 00:07:31,390
miraran para abajo.

98
00:07:31,600 --> 00:07:37,620
Tengo que coger la rotación que ya tienen esos animales para que se preserve si los pongo usando cualquier

99
00:07:37,640 --> 00:07:38,710
cuaterniones identity.

100
00:07:38,740 --> 00:07:40,660
Como os he dicho antes, volverán a mirar para arriba.

101
00:07:41,250 --> 00:07:42,070
No es lo que queremos.

102
00:07:42,820 --> 00:07:47,950
Queremos utilizar la propia rotación del animal del propio Enemies en posición animal.

103
00:07:47,950 --> 00:07:53,420
índex me quedo con el Transform y del Transform me quedo con el rotation, vale.

104
00:07:54,190 --> 00:08:03,040
Repito, si el animal que queremos instancias se encuentra dentro de los límites permitidos entre cero

105
00:08:03,430 --> 00:08:13,810
y la longitud del raid enemigos, cuando se pulse la tecla S se instancia era el enemigo que haya en

106
00:08:13,810 --> 00:08:20,590
dicha posición en el 00:28 y con la misma rotación que ya tuvieran dicho enemigo.

107
00:08:20,650 --> 00:08:25,900
Esto lo entendéis estas tres cosas de dónde sale cada una de ellas y porque esto es muy importante,

108
00:08:26,200 --> 00:08:30,520
porque el día de mañana los problemas que me encuentro es que la gente no sabe qué poner aquí o aquí.

109
00:08:32,050 --> 00:08:36,220
Esto quiere decir que si ahora aguardamos nos venimos al juego.

110
00:08:38,390 --> 00:08:39,850
Y le damos al play

111
00:08:42,640 --> 00:08:47,770
cada vez que pulsar la tecla S desde la 00:28 aparecerá un enemigo.

112
00:08:48,020 --> 00:08:48,460
Ejemplo.

113
00:08:51,220 --> 00:08:54,510
Tardará un pelín, pero ahí aparece, lo habéis hecho?

114
00:08:54,550 --> 00:08:56,710
Voy a darle un par de veces para que salgan un par de vacas.

115
00:08:57,240 --> 00:09:04,210
Veis que como siempre instancia el animal en la posición cero, sale el animal en la posición cero que

116
00:09:04,210 --> 00:09:05,020
es la vaca.

117
00:09:05,980 --> 00:09:09,280
Vamos a cambiarlo por el animal en la posición 2.

118
00:09:10,540 --> 00:09:12,490
El animal en la posición 2 es el stakes.

119
00:09:12,500 --> 00:09:15,010
El ciervo era la tecla.

120
00:09:16,180 --> 00:09:19,840
Le doy a la tecla S un par de veces y me salen los ciervos.

121
00:09:19,840 --> 00:09:26,230
Estos con las cornamentas los veis el lugar del que está en la posición 2, el que está en la posición

122
00:09:26,230 --> 00:09:31,270
3 van a salir y los perritos uno detrás de otro.

123
00:09:31,540 --> 00:09:32,300
Los veis?

124
00:09:32,890 --> 00:09:39,310
Si entonces fijaros que ahora el truco cual es el truco es que ahora ya somos capaces de instancias

125
00:09:39,580 --> 00:09:43,060
donde queremos, donde queremos.

126
00:09:43,120 --> 00:09:47,470
Es la posición de arriba de los 3 que hay aquí.

127
00:09:47,590 --> 00:09:50,890
El 28 me viene fantástico porque ya está por arriba.

128
00:09:51,190 --> 00:09:52,960
De hecho, acordaros lo que os he dicho antes.

129
00:09:53,210 --> 00:09:58,780
Si él es palmauna ayer ya está en una coordenada z que os interesa.

130
00:09:59,200 --> 00:10:01,290
Podéis utilizar la z del esta humana.

131
00:10:01,330 --> 00:10:07,890
Ya os acordáis que os lo he dicho entonces, como el propio Pacman ayer tiene este scrip, en el caso

132
00:10:07,910 --> 00:10:16,090
que no queráis poner aquí un 28 a saco, lo podéis reemplazar ese 28 por la posición en la que se encuentra

133
00:10:16,660 --> 00:10:23,080
el manager, que sería Transform Punto Opposition Punto Z.

134
00:10:23,590 --> 00:10:26,710
Esto sería exactamente la posición en la que habéis colocado el manager.

135
00:10:27,680 --> 00:10:40,140
Si esto por un lado, por otro lado os estáis dando cuenta que todos aparecen en el mismo sitio, entonces

136
00:10:40,240 --> 00:10:48,160
aquí fijaros que cuando yo le doy a la S, independientemente de si sale el cero, si sale el 1 o si

137
00:10:48,160 --> 00:10:53,830
sale el 2 o 3, los objetos o los enemigos, todos salen en la misma zona.

138
00:10:54,490 --> 00:10:57,190
Entonces aquí hay dos cosas que vamos a tener que cambiar.

139
00:10:58,120 --> 00:11:04,690
La primera es que el enemigo es Pawnee, no siempre sea el mismo que pueda cambiar de uno a otro de

140
00:11:04,690 --> 00:11:07,660
forma aleatoria y el otro es la posición.

141
00:11:07,960 --> 00:11:12,460
No quiero que cada vez que se pawnee todos aparezcan en el mismo sitio, porque yo coloco al granjero

142
00:11:12,460 --> 00:11:15,830
aquí y ya me he pasado el juego sin hacer nada.

143
00:11:16,940 --> 00:11:20,370
Entonces aquí hay dos cosas que habrá que cambiar dinámicamente.

144
00:11:20,380 --> 00:11:22,600
Habrá que modificar el Animal Index.

145
00:11:22,930 --> 00:11:30,430
Es imposible que este animal índex lo tenga que venir y cambiar a mano en el lateral correcto y la otra

146
00:11:30,610 --> 00:11:33,850
para que el objeto se pawnee.

147
00:11:33,880 --> 00:11:35,720
No siempre aquí.

148
00:11:36,600 --> 00:11:41,790
Qué coordenada habrá que cambiar de la zona de Spawn y la X?

149
00:11:41,800 --> 00:11:43,000
De hecho aquí lo podéis observar.

150
00:11:43,030 --> 00:11:44,680
Veis que es la flecha de color rojo?

151
00:11:45,610 --> 00:11:47,320
La flecha de color rojo es la x.

152
00:11:47,550 --> 00:11:53,020
Si yo siempre es pavoneo en x igual a cero x igual a cero x igual a cero x igual a cero, siempre saldrá

153
00:11:53,020 --> 00:11:54,070
en medio de la pantalla.

154
00:11:54,210 --> 00:11:56,080
Como yo construí la escena.

155
00:11:57,190 --> 00:12:01,600
No tiene mucho sentido escanear ni igual a 27 bases para crear una cabra volando.

156
00:12:02,180 --> 00:12:04,360
Me hace gracia, pero no tiene mucho sentido.

157
00:12:04,750 --> 00:12:12,820
Entonces la posición de la Z es tal cual la que está nuestro manager, la que hemos colocado, nuestro

158
00:12:12,820 --> 00:12:13,480
manager.

159
00:12:13,730 --> 00:12:19,960
La Y griega será el cero porque será el propio suelo para que se sustancian a nivel del suelo y la Z

160
00:12:19,990 --> 00:12:20,950
habrá que cambiarlo.

161
00:12:21,580 --> 00:12:22,810
La X habrá que cambiarla.

162
00:12:23,290 --> 00:12:26,830
Así que vamos a ver la aleatoriedad en dos sentidos 1.

163
00:12:27,070 --> 00:12:31,630
Cómo hacer que este animal índex en lugar de siempre valer lo que vale, vaya cambiando cada vez que

164
00:12:31,630 --> 00:12:32,200
hacéis clic.

165
00:12:33,190 --> 00:12:38,410
Y luego, en segundo lugar, cómo hacer que la coordenada X sea cada vez diferente entre ciertos márgenes

166
00:12:38,860 --> 00:12:39,280
de acuerdo.
