﻿1
00:00:04,480 --> 00:00:05,230
‫Hola y bienvenido.

2
00:00:05,230 --> 00:00:09,610
‫En esta lección, vamos a presentar algo nuevo en el árbol de comportamiento, los servicios.

3
00:00:09,880 --> 00:00:14,530
‫Vamos a descubrir qué son los servicios, cómo nos ayudan con el comportamiento de ejecución persistente y cómo

4
00:00:14,530 --> 00:00:16,330
‫podemos escribir los nuestros en C++.

5
00:00:16,330 --> 00:00:17,170
‫Vamos a sumergirnos.

6
00:00:18,150 --> 00:00:23,700
‫Ahora solo quedan algunas piezas de lógica en nuestro controlador de aire que no están en nuestro árbol de comportamiento.

7
00:00:24,120 --> 00:00:26,940
‫Uno de ellos es establecer la ubicación de inicio.

8
00:00:26,970 --> 00:00:29,940
‫Esto todavía lo quiero configurar aquí desde el controlador de aire.

9
00:00:30,600 --> 00:00:35,940
‫Pero cosas como tic, ahora que me gustaría hacer desde dentro de un árbol de comportamiento.

10
00:00:36,390 --> 00:00:38,070
‫¿Qué quiero hacer aquí?

11
00:00:38,130 --> 00:00:39,690
‫como hago para llegar a.

12
00:00:39,720 --> 00:00:42,150
‫Para agregar a nuestra ubicación de jugador.

13
00:00:42,150 --> 00:00:45,510
‫Para actualizar la última ubicación conocida del jugador.

14
00:00:46,260 --> 00:00:51,300
‫Podemos hacer ambas cosas con algo llamado servicio de planos.

15
00:00:51,660 --> 00:00:55,950
‫Así que vayamos a nuestros planos y veamos qué está pasando.

16
00:00:55,980 --> 00:01:03,030
‫Entonces, si voy a mi aliado y abro el árbol de comportamiento, lo hablo a la ventana principal, entonces necesito mostrarle

17
00:01:03,030 --> 00:01:05,040
‫qué servicios hemos usado antes.

18
00:01:05,460 --> 00:01:14,190
‫Y es esencialmente una forma de ejecutar algo en cada toma o cada cierto tiempo cuando una ruta en particular está

19
00:01:14,190 --> 00:01:14,730
‫activa.

20
00:01:14,760 --> 00:01:22,110
‫Entonces, si tuviera un servicio aquí sobre el comportamiento de Chase, entonces algún código podría ejecutarse todo el tiempo que el comportamiento de

21
00:01:22,680 --> 00:01:26,850
‫Chase esté activo, ya sea que nos estemos moviendo, disparando, ponderando cualquiera de

22
00:01:26,850 --> 00:01:28,770
‫estas cosas, siempre sería corriendo.

23
00:01:28,770 --> 00:01:30,990
‫Pero si estamos dentro, investigar, no sería.

24
00:01:31,440 --> 00:01:35,520
‫Este es exactamente el tipo de situación que buscamos para usar un servicio.

25
00:01:35,850 --> 00:01:38,020
‫Ahora vamos a tener un servicio de ejemplo.

26
00:01:38,040 --> 00:01:44,610
‫Una cosa que notamos cuando estamos jugando es que una vez que el aire entra dentro de

27
00:01:44,610 --> 00:01:51,440
‫nuestro alcance y nos movemos, no gira para mirarnos y podemos arreglar eso con un servicio ya incorporado aquí.

28
00:01:51,450 --> 00:01:58,540
‫Así que haga clic derecho en esta nota y vaya a agregar servicio y busque el servicio de enfoque predeterminado.

29
00:01:58,580 --> 00:01:59,970
‫Puedes ver que es de otro color, es verde.

30
00:02:00,480 --> 00:02:05,310
‫Y si seleccionamos ese servicio predeterminado, también va debajo de los nodos de secuencia en lugar de encima de ellos, que es

31
00:02:05,310 --> 00:02:06,630
‫lo que hacen los decoradores.

32
00:02:07,440 --> 00:02:11,850
‫Entonces, con el enfoque predeterminado seleccionado, puede elegir en qué desea enfocarse.

33
00:02:11,850 --> 00:02:14,670
‫En este caso, queremos centrarnos en la ubicación del jugador.

34
00:02:15,390 --> 00:02:17,220
‫Continúe y presione guardar, presione reproducir.

35
00:02:17,580 --> 00:02:23,070
‫Y ahora, si echamos un vistazo y nos movemos, pueden ver que gira para seguirnos.

36
00:02:23,820 --> 00:02:24,540
‫Cosas interesantes.

37
00:02:25,050 --> 00:02:32,100
‫Ahora queremos poder implementar un servicio similar en C++ que actualice la ubicación de nuestro jugador

38
00:02:32,100 --> 00:02:38,760
‫todo el tiempo y actualice la ubicación de nuestro último jugador conocido mientras estamos persiguiendo.

39
00:02:38,970 --> 00:02:41,670
‫Vamos a hacerlo como dos servicios separados.

40
00:02:41,670 --> 00:02:46,620
‫Y puede ver cómo eso también sirve automáticamente para hacer las cosas un poco más

41
00:02:46,620 --> 00:02:53,910
‫eficientes que hacerlo en tecnología porque solo puede ejecutar la última ubicación de juego conocida cuando está en la parte correcta del árbol

42
00:02:53,910 --> 00:02:54,690
‫de comportamiento.

43
00:02:54,930 --> 00:02:58,110
‫Así que volvamos al navegador de contenido Sandbox.

44
00:02:58,110 --> 00:03:02,640
‫Agregue una nueva clase de C++ nueva, vaya a mostrar todas las clases y busque cuáles son nuestras opciones aquí.

45
00:03:03,120 --> 00:03:04,950
‫Estamos buscando un mejor servicio.

46
00:03:04,950 --> 00:03:11,130
‫Y luego hay un par de opciones, como tuvimos con B. t Tarea.

47
00:03:11,610 --> 00:03:15,900
‫Tenemos Blackboard Base, y en realidad vamos a querer Blackboard Base porque

48
00:03:15,900 --> 00:03:18,150
‫queremos saber qué clave debemos actualizar.

49
00:03:18,150 --> 00:03:20,610
‫Por ejemplo, ¿debería ser la ubicación del jugador?

50
00:03:20,610 --> 00:03:22,950
‫¿Debería ser la última ubicación conocida del jugador?

51
00:03:23,460 --> 00:03:28,800
‫Así que vamos a ir y presionar a continuación en este con Blackboard Base, seleccionarlo

52
00:03:28,800 --> 00:03:36,240
‫y vamos a llamar a este servicio beta, subrayar la ubicación del jugador así e ir a cómo crear esa clase.

53
00:03:36,780 --> 00:03:42,960
‫Entonces, una vez que hayamos terminado de compilar, vamos a pasar al código de Visual Studio y pueden ver que

54
00:03:42,960 --> 00:03:48,300
‫tenemos esta ubicación del reproductor de servicio BT que se hereda del Tribunal base de Service Blackwood.

55
00:03:48,330 --> 00:03:49,320
‫Eso es lo que queremos ahora.

56
00:03:49,320 --> 00:03:51,630
‫¿Qué funcionalidad vamos a mover en esto?

57
00:03:52,140 --> 00:03:58,200
‫Bueno, voy a tratar de mover la funcionalidad más simple posible, que es simplemente establecer el valor

58
00:03:58,800 --> 00:04:01,590
‫de la última ubicación conocida del jugador.

59
00:04:01,590 --> 00:04:08,310
‫Aunque esta tecla se configurará en el árbol de comportamiento, no aquí en un texto sin formato, obtendrá la

60
00:04:08,310 --> 00:04:12,360
‫ubicación del jugador y la configurará como una tecla de pizarra.

61
00:04:12,360 --> 00:04:17,580
‫Y no va a hacer ninguna de las razones de verificación de la línea de visión, ya que si lo estamos ejecutando en

62
00:04:17,580 --> 00:04:21,900
‫nuestro árbol de comportamiento, solo cuando estamos persiguiendo eso, no necesitamos la verificación de la línea de visión.

63
00:04:21,900 --> 00:04:25,230
‫Podemos ver el jugador que es automáticamente sabemos que ese es el caso.

64
00:04:25,590 --> 00:04:28,770
‫Así que hay otra simplificación para hacerlo en un servicio.

65
00:04:29,610 --> 00:04:36,570
‫Entonces, esto debería ser bastante sencillo si sabemos cómo obtener una llamada de método aquí en el servicio BT.

66
00:04:37,320 --> 00:04:41,910
‫Así que vamos a echar un vistazo a BT Service Dot para ver qué hay disponible allí.

67
00:04:41,910 --> 00:04:43,890
‫¿Cuál es la documentación, qué podemos hacer?

68
00:04:44,250 --> 00:04:50,730
‫Los métodos principales que puede ver aquí se vuelven relevantes en el nodo de marca relevante de C y en el inicio de la

69
00:04:50,730 --> 00:04:51,090
‫búsqueda.

70
00:04:51,090 --> 00:04:51,960
‫Al iniciar la búsqueda.

71
00:04:51,960 --> 00:04:54,180
‫No nos interesa especialmente pero toma nota.

72
00:04:54,180 --> 00:05:00,630
‫Sí, ahí es donde vamos a recibir actualizaciones todo el tiempo que este servicio esté en una ruta activa.

73
00:05:01,170 --> 00:05:02,730
‫Así que ese es uno que vamos a querer implementar.

74
00:05:03,030 --> 00:05:05,640
‫Vamos y buscamos en este archivo para encontrar la firma completa.

75
00:05:05,640 --> 00:05:07,950
‫Aquí podemos ver es aquí.

76
00:05:07,950 --> 00:05:09,240
‫Vamos a ver en qué sección está.

77
00:05:09,240 --> 00:05:10,530
‫Está bajo la sección protegida.

78
00:05:10,890 --> 00:05:16,620
‫Así que vamos a superar el servicio que hemos creado y crearemos una sección protegida.

79
00:05:17,530 --> 00:05:24,160
‫Y péguelo, es automáticamente una anulación aquí porque BT Service lo estaba heredando de una clase principal, pero

80
00:05:24,160 --> 00:05:27,400
‫no hay daño en anularlo nuevamente nosotros mismos.

81
00:05:27,790 --> 00:05:32,890
‫Podemos hacer un cambio de control P para crear la implementación y luego queremos llamar a super.

82
00:05:32,920 --> 00:05:39,220
‫Así que queremos un nodo supertick y queremos pasar nuestra propia compilación y nuestra memoria de nodo.

83
00:05:39,700 --> 00:05:41,410
‫Y veamos, hay algunas otras cosas aquí.

84
00:05:41,440 --> 00:05:43,210
‫También tenemos un segundo Delta.

85
00:05:43,210 --> 00:05:44,850
‫Eso es lo que tenemos que dejar pasar también.

86
00:05:44,860 --> 00:05:49,930
‫Y finalmente terminar con este punto y coma debería desaparecer la implementación del nodo de marca.

87
00:05:49,960 --> 00:05:54,130
‫Ahora aquí básicamente queremos hacer ese comportamiento desde el controlador de aire.

88
00:05:54,130 --> 00:05:59,410
‫CP, en el que obtenemos el componente de pizarra y luego establecemos un valor como vector.

89
00:05:59,710 --> 00:06:03,910
‫Bueno, sabemos cómo obtener componentes de pizarra de las referencias de componentes del propietario.

90
00:06:04,210 --> 00:06:05,370
‫Eso es bastante sencillo.

91
00:06:05,380 --> 00:06:11,560
‫Solo vamos a hacer el punto de compensación del propietario y luego vamos a obtener los componentes de la pizarra

92
00:06:11,560 --> 00:06:17,710
‫recordando que necesitamos incluir el hash aquí para el componente de pizarra con barra inclinada del árbol de comportamiento.

93
00:06:18,100 --> 00:06:20,140
‫Entonces podemos usar nuestro operador de flecha.

94
00:06:20,590 --> 00:06:27,310
‫Y lo que deberíamos poder hacer aquí es simplemente establecer el valor como vector y que necesitamos una clave.

95
00:06:27,310 --> 00:06:30,460
‫Bueno, sabemos cómo lidiar con esto, pero refresquemos nuestra memoria.

96
00:06:30,460 --> 00:06:36,310
‫Si vamos a nuestro servicio de BT subrayado Blackboard Base, puede ver lo mismo que con la tarea,

97
00:06:36,310 --> 00:06:38,330
‫tenemos la tecla de pizarra seleccionada.

98
00:06:38,350 --> 00:06:39,070
‫Eso es lo que vamos a usar.

99
00:06:39,400 --> 00:06:44,110
‫Obtener clave de Blackboard seleccionada obtiene la clave que se seleccionó en el árbol de comportamiento.

100
00:06:44,110 --> 00:06:48,520
‫Y luego queremos nuestro valor de vector donde vamos a obtener ese pozo exactamente igual que el controlador de aire.

101
00:06:48,520 --> 00:06:50,170
‫Vamos a obtener el grupo de jugadores.

102
00:06:50,170 --> 00:06:55,690
‫Y antes que nada, aquí arriba en la parte superior, debemos verificar si esto es nulo o no.

103
00:06:55,690 --> 00:06:57,790
‫Y también necesitamos incluir ese juego estático.

104
00:06:57,790 --> 00:07:00,130
‫Así que asegurémonos de tener el juego.

105
00:07:00,130 --> 00:07:05,920
‫La estática incluye desde el controlador aéreo, mantenga incluido en nuestro reproductor una ubicación de servicio del reproductor.

106
00:07:06,880 --> 00:07:13,830
‫Entonces vamos a hacer y si el jugador -- es igual a un puntero nulo, entonces vamos a querer hacer

107
00:07:13,830 --> 00:07:19,780
‫es regresar antes de tiempo aquí regresa nulo para que podamos hacer un retorno temprano rápido.

108
00:07:20,200 --> 00:07:30,010
‫Entonces podemos usar nuestro reproductor -- aquí para simplemente obtener la ubicación del actor y es posible que necesitemos hacer una inclusión aquí.

109
00:07:30,010 --> 00:07:30,880
‫Veremos cómo nos va.

110
00:07:30,880 --> 00:07:34,360
‫Bueno, no está de más estar seguro, ¿verdad?, y ser explícito sobre estas cosas.

111
00:07:34,360 --> 00:07:40,230
‫Así que vamos a hacer una inclusión para el marco del juego y luego una barra inclinada va a ser: punto H para

112
00:07:40,240 --> 00:07:45,340
‫que podamos asegurarnos de que tenemos todo en orden aquí y luego simplemente establecemos el valor como volver a eso

113
00:07:45,610 --> 00:07:47,320
‫debería ser todo lo que necesitamos.

114
00:07:47,320 --> 00:07:49,120
‫Vamos a compilar y ver si esto funciona.

115
00:07:49,180 --> 00:07:50,290
‫De hecho, una cosa más.

116
00:07:50,290 --> 00:07:54,640
‫Probablemente queramos un nombre bonito y bonito, así que deberíamos tener un constructor aquí.

117
00:07:54,670 --> 00:08:00,520
‫Así que voy a crear una sección pública con el constructor, que será el nombre de la

118
00:08:00,520 --> 00:08:03,730
‫clase, y luego continuaremos y crearemos esa implementación.

119
00:08:03,730 --> 00:08:08,530
‫Voy a llevar mi implementación por encima de la implementación para el nodo de marca

120
00:08:08,530 --> 00:08:16,960
‫y luego vamos a establecer el nombre del nodo igual a él, debería actualizar la ubicación del reproductor y vamos a construir y ver si eso

121
00:08:16,960 --> 00:08:17,350
‫funciona.

122
00:08:17,680 --> 00:08:19,240
‫Parece que me falta un punto y coma.

123
00:08:19,240 --> 00:08:19,990
‫Intentémoslo de nuevo.

124
00:08:20,170 --> 00:08:25,810
‫Una vez que se haya compilado con éxito, podemos pasar a nuestro enemigo y, además del enfoque

125
00:08:25,810 --> 00:08:31,600
‫de configuración, quiero agregar un nuevo servicio que aparece aquí como la ubicación del jugador donde el nombre

126
00:08:31,600 --> 00:08:34,570
‫bonito aparece básicamente como ubicación de actualización. .

127
00:08:34,570 --> 00:08:40,660
‫Puedes ver que quiere decirte la frecuencia de marcar cada punto por 2. 6 segundos

128
00:08:40,660 --> 00:08:43,930
‫Eso es mejor que usar tick porque sabemos que tick ejecuta cada cuadro aquí.

129
00:08:43,930 --> 00:08:46,630
‫Esto se ejecuta con menos frecuencia, lo cual es bueno.

130
00:08:46,630 --> 00:08:52,390
‫Y podemos ir a los detalles y crear una clave de pizarra, desplegar y seleccionar que queremos actualizar

131
00:08:52,390 --> 00:08:58,690
‫no solo como la ubicación de juego sino también como la última ubicación conocida del jugador, porque eso sucederá en

132
00:08:58,690 --> 00:09:02,620
‫cada cuadro mientras estemos persiguiendo y eso es el comportamiento que queremos.

133
00:09:02,830 --> 00:09:08,890
‫Entonces, un nodo de servicio más que queremos seguir adelante y crear va a hacer el comportamiento de los controladores.

134
00:09:08,890 --> 00:09:11,170
‫Bajaremos a tomar y ver lo que queda.

135
00:09:11,170 --> 00:09:17,470
‫Lo que hacemos aquí es actualizar la ubicación del jugador dependiendo de si tenemos línea de visión.

136
00:09:17,470 --> 00:09:19,330
‫Así que queremos que actualice la ubicación de juego.

137
00:09:19,330 --> 00:09:22,240
‫Si tenemos líneas como borrar la ubicación si no las tenemos.

138
00:09:22,540 --> 00:09:23,830
‫Así que va a ser un nuevo servicio.

139
00:09:23,830 --> 00:09:25,480
‫Observe que es un comportamiento ligeramente diferente.

140
00:09:25,900 --> 00:09:28,240
‫Vamos a agregar una nueva, nueva clase de C++.

141
00:09:28,240 --> 00:09:29,890
‫Vamos a ir a mostrar todas las clases.

142
00:09:29,890 --> 00:09:35,110
‫Y nuevamente, vamos a ser el servicio subrayado Blackboard Base como nuestra clase base

143
00:09:35,110 --> 00:09:39,610
‫y lo llamaremos B. t Servicio de subrayado.

144
00:09:40,620 --> 00:09:43,700
‫Ubicación del jugador si se ve.

145
00:09:44,220 --> 00:09:46,830
‫Y sigue adelante y crea esa clase.

146
00:09:46,950 --> 00:09:51,090
‫Y debido a que esto es todo lo que en su mayoría ha visto antes, su desafío será implementar

147
00:09:51,090 --> 00:09:51,690
‫este servicio.

148
00:09:52,050 --> 00:09:57,540
‫Así que vas a implementar el nodo tic usando el código en el controlador de aire.

149
00:09:57,540 --> 00:10:04,320
‫Como guía, necesitará obtener el puntero del controlador aéreo desde el servicio BT.

150
00:10:04,320 --> 00:10:09,690
‫Ahora, esto es exactamente lo mismo que hicimos en las tareas de ritmo, así que utilícelo como guía para

151
00:10:09,690 --> 00:10:11,130
‫obtener ese puntero del controlador.

152
00:10:11,640 --> 00:10:15,240
‫Necesitará el puntero del controlador de aire para verificar la línea de visión.

153
00:10:15,240 --> 00:10:21,060
‫Recuerde, la línea de visión es un método en el controlador de aire y luego debe actualizar o

154
00:10:21,060 --> 00:10:27,210
‫borrar la clave según su verificación de línea de visión y luego colocar este nodo en el árbol de comportamiento.

155
00:10:27,210 --> 00:10:31,950
‫¿Dónde cree que estará el nivel correcto del árbol de comportamiento para que se ejecute este servicio?

156
00:10:32,160 --> 00:10:36,840
‫Piense un poco en eso y rasque un poco la barbilla, haga una pausa, grabe un video y pruébelo.

157
00:10:38,040 --> 00:10:38,270
‫Bueno.

158
00:10:38,280 --> 00:10:38,790
‫Bienvenido de nuevo.

159
00:10:38,820 --> 00:10:44,400
‫Entonces, esto ha abierto un nuevo servicio de remolacha en el código de Visual Studio.

160
00:10:44,790 --> 00:10:48,360
‫Ahora será prácticamente idéntico en el encabezado.

161
00:10:48,900 --> 00:10:53,850
‫Así que voy a continuar y copiar eso en un encabezado recién generado.

162
00:10:54,390 --> 00:10:59,970
‫La excepción es que necesitamos cambiar el nombre del constructor para que coincida.

163
00:11:00,450 --> 00:11:07,380
‫Ahora vamos a crear una implementación para el constructor y le daremos un nombre de nodo para actualizar la ubicación

164
00:11:08,070 --> 00:11:10,170
‫del jugador si se ve.

165
00:11:10,920 --> 00:11:12,160
‫Y agrega un punto y coma.

166
00:11:12,180 --> 00:11:12,630
‫El final aquí.

167
00:11:12,680 --> 00:11:14,110
‫No olvidemos que esta vez.

168
00:11:14,520 --> 00:11:16,290
‫Luego de vuelta a C++.

169
00:11:16,290 --> 00:11:18,450
‫Voy a implementar el nodo tick también.

170
00:11:18,840 --> 00:11:25,980
‫Y solo voy a copiar si podemos encontrar la ubicación del jugador CP. Y solo voy a copiar la

171
00:11:25,980 --> 00:11:32,550
‫llamada a super y la obtención del peón del jugador y la verificación de la devolución nula.

172
00:11:32,550 --> 00:11:35,880
‫De hecho, voy a copiar todo el cuerpo y lo modificaremos desde allí.

173
00:11:36,630 --> 00:11:43,300
‫Entonces copiamos eso y también vamos a copiar el acceso al componente de pizarra con la inclusión para

174
00:11:43,300 --> 00:11:49,230
‫el componente de pizarra, las estadísticas del juego y el peón, porque necesitamos acceso a todos

175
00:11:49,230 --> 00:11:49,860
‫ellos.

176
00:11:50,130 --> 00:11:52,950
‫De hecho, gran parte de la funcionalidad se comparte aquí.

177
00:11:53,220 --> 00:11:58,830
‫Podría pensar en hacer que de alguna manera compartan este código, pero creo que no hay tanta duplicación como para que

178
00:11:58,830 --> 00:12:00,090
‫nos importe lo suficiente.

179
00:12:00,900 --> 00:12:05,400
‫Entonces, lo que vamos a tener que hacer aquí también es verificar que tengamos un controlador de aire.

180
00:12:05,400 --> 00:12:15,210
‫Así que voy a hacer un si la composición del propietario de los componentes del propietario no obtiene un puntero de propietario igual a nulo, entonces vamos

181
00:12:15,810 --> 00:12:19,170
‫a querer continuar y regresar en esta etapa.

182
00:12:19,980 --> 00:12:24,330
‫Luego, lo siguiente que vamos a querer hacer es verificar nuestra visibilidad.

183
00:12:24,330 --> 00:12:31,890
‫Así que vamos a hacer un si el punto de compensación del propietario obtiene el propietario del aire y luego vamos a hacer una

184
00:12:31,890 --> 00:12:34,410
‫flecha aquí y necesitamos incluir un controlador aquí.

185
00:12:34,410 --> 00:12:36,600
‫Así que va a incluir hash.

186
00:12:38,150 --> 00:12:40,760
‫Y va a ser yo el controlador.

187
00:12:40,790 --> 00:12:50,930
‫Entonces, queremos hacer una línea y ver cuál es el uso correcto aquí si pasamos al controlador de aire.

188
00:12:50,930 --> 00:12:59,060
‫CP Su línea de visión dos es lo que queremos, así que la línea de visión entonces necesitamos hacer la línea de visión de la

189
00:12:59,060 --> 00:12:59,720
‫obra.

190
00:12:59,720 --> 00:13:00,980
‫Un peón en este caso.

191
00:13:00,980 --> 00:13:02,600
‫¿Tenemos línea de visión al peón del jugador?

192
00:13:03,290 --> 00:13:04,790
‫¿Es eso lo que estamos haciendo en el CPA?

193
00:13:04,790 --> 00:13:05,780
‫Vamos a comprobarlo dos veces.

194
00:13:05,780 --> 00:13:06,440
‫Sí somos.

195
00:13:07,250 --> 00:13:11,150
‫Entonces vamos a querer seguir adelante y establecer los valores de manera diferente.

196
00:13:11,660 --> 00:13:15,740
‫Así que estamos configurando el valor del vector para la ubicación del actor de captura del peón del jugador.

197
00:13:15,740 --> 00:13:18,560
‫Sí, eso es si tenemos otra línea de visión.

198
00:13:18,560 --> 00:13:22,160
‫Si no tenemos línea de visión, sabemos que necesitamos estar despejando ese valor.

199
00:13:22,580 --> 00:13:25,790
‫Así que seguiremos obteniendo el componente propietario, obtener el componente de pizarra.

200
00:13:26,060 --> 00:13:31,580
‫Entonces va a ser un valor claro y todavía vamos a estar borrando el valor de la

201
00:13:31,580 --> 00:13:37,700
‫tecla de pizarra seleccionada, y eso debería cubrirnos en gran medida para la implementación de la ubicación del jugador.

202
00:13:37,700 --> 00:13:41,460
‫Si se ve, vamos a compilar y ver si funciona bien.

203
00:13:41,460 --> 00:13:42,650
‫La compilación tuvo éxito.

204
00:13:42,650 --> 00:13:44,540
‫Vayamos al árbol de comportamiento.

205
00:13:44,570 --> 00:13:50,750
‫Ahora, el nivel que quiero que se ejecute está básicamente en el nivel superior en el selector inicial, porque quiero

206
00:13:50,750 --> 00:13:56,330
‫que actualice la ubicación del jugador básicamente todo el tiempo porque necesitamos poder abortar cualquiera de estos otros

207
00:13:56,330 --> 00:13:59,330
‫comportamientos según el jugador. ubicación que se está configurando.

208
00:13:59,720 --> 00:14:02,570
‫Por lo tanto, debemos poder configurarlo y desarmarlo en cualquier momento.

209
00:14:03,050 --> 00:14:08,630
‫Así que voy a ir y hacer clic con el botón derecho en el selector de nivel superior y el servicio en la ubicación de reproducción si se ve.

210
00:14:09,290 --> 00:14:13,910
‫Y luego vamos a seleccionar ese nodo de servicio y seleccionar su tecla de pizarra, que será

211
00:14:13,910 --> 00:14:15,020
‫nuestra ubicación de juego.

212
00:14:15,740 --> 00:14:20,390
‫Entonces, uno establecido en la ubicación de reproducción, la ubicación actualizada del jugador, el más tonto es actualizar

213
00:14:20,400 --> 00:14:21,980
‫la última ubicación conocida del jugador.

214
00:14:22,640 --> 00:14:29,210
‫Y ahora deberíamos poder pasar a nuestro controlador aéreo y esencialmente eliminar todo este código en tecnología

215
00:14:29,210 --> 00:14:33,500
‫porque en su lugar ha sido reemplazado por nuestros servicios.

216
00:14:33,830 --> 00:14:36,230
‫Y podemos seguir adelante y compilar y ver si eso funciona.

217
00:14:36,320 --> 00:14:41,030
‫Vayamos al editor y juguemos y veamos si todavía tenemos a nuestro enemigo acercándose a nosotros.

218
00:14:41,030 --> 00:14:46,520
‫Viene corriendo hacia nosotros, pierde la vista, luego vuelve hacia nosotros y comienza a disparar.

219
00:14:46,520 --> 00:14:46,790
‫Sí.

220
00:14:46,790 --> 00:14:53,000
‫Básicamente, todo funciona como antes, excepto que ahora lo hace completamente a través de servicios

221
00:14:53,000 --> 00:14:55,520
‫que escribimos para nosotros en C++.

222
00:14:55,820 --> 00:15:01,010
‫En la próxima lección, corregiremos ese molesto error en el que la IA continúa

223
00:15:01,010 --> 00:15:02,990
‫disparando y eventualmente logra suicidarse.

224
00:15:03,290 --> 00:15:03,950
‫Veré eso.

