﻿1
00:00:04,130 --> 00:00:10,460
‫Entonces, el objetivo de este video es tener proyectiles que realmente se lancen por el aire y se

2
00:00:10,460 --> 00:00:11,930
‫comporten como deberían hacerlo.

3
00:00:12,020 --> 00:00:13,520
‫Oye, bienvenido de nuevo.

4
00:00:13,550 --> 00:00:19,430
‫En este video, nos preocupamos por hacer que nuestro proyectil se comporte como un proyectil y se mueva.

5
00:00:19,610 --> 00:00:22,040
‫Ahora, hay diferentes maneras de manejar esto.

6
00:00:22,070 --> 00:00:28,220
‫Una forma es establecer manualmente la ubicación y la rotación del proyectil nosotros mismos.

7
00:00:28,250 --> 00:00:33,680
‫Ahora, esto generalmente requeriría que hagamos la actualización en cada cuadro, por lo que probablemente colocaríamos esto en

8
00:00:33,680 --> 00:00:34,940
‫la función de marca.

9
00:00:35,210 --> 00:00:41,810
‫Otra forma es simplemente agregar un impulso al proyectil y dejar que el motor de física se haga cargo.

10
00:00:41,900 --> 00:00:48,440
‫Esencialmente, estamos aplicando una fuerza y lanzando ese proyectil y dejando que la gravedad haga lo suyo, y

11
00:00:48,440 --> 00:00:51,380
‫el proyectil simplemente volará por el aire.

12
00:00:51,410 --> 00:00:55,310
‫Ahora, otra forma sería usar un componente de movimiento.

13
00:00:55,340 --> 00:01:00,560
‫Ahora, este es un tipo especial de componente que agregaríamos a nuestra clase de proyectil.

14
00:01:00,560 --> 00:01:06,230
‫Y después de establecer algunos parámetros en el componente de movimiento, el componente de movimiento manejará

15
00:01:06,230 --> 00:01:08,060
‫el movimiento del actor.

16
00:01:08,090 --> 00:01:15,860
‫Ahora sucede que Unreal Engine tiene un tipo de componente incorporado hecho específicamente para proyectiles.

17
00:01:15,860 --> 00:01:20,210
‫Esto aprovecha algunas de las funciones integradas de Unreal Engine.

18
00:01:20,210 --> 00:01:26,120
‫Y al hacer esto, permitimos que el componente de movimiento maneje el movimiento por nosotros en función de la configuración

19
00:01:26,120 --> 00:01:27,020
‫que proporcionamos.

20
00:01:27,020 --> 00:01:29,360
‫Así que este es el método que vamos a utilizar.

21
00:01:29,360 --> 00:01:35,750
‫Así que nos gustaría agregar un componente de movimiento de proyectiles a nuestra clase de proyectiles, y esto es lo

22
00:01:35,750 --> 00:01:38,690
‫que manejará el movimiento del objeto de proyectiles.

23
00:01:38,690 --> 00:01:45,440
‫Entonces, a medida que generamos un proyectil en el mundo, el componente de movimiento de proyectil que pertenece a la clase de

24
00:01:45,440 --> 00:01:51,620
‫proyectil, se puede configurar y personalizar en función de las variables en la clase de movimiento de proyectil que

25
00:01:51,650 --> 00:01:52,190
‫configuramos.

26
00:01:52,220 --> 00:01:58,340
‫Ahora vamos a establecer un par de ellos, como su velocidad inicial y su velocidad máxima, y el componente

27
00:01:58,340 --> 00:02:02,750
‫de movimiento del proyectil realmente moverá el proyectil en el mundo por nosotros.

28
00:02:02,780 --> 00:02:06,290
‫Ahora, aquí está la página de documentación de Unreal Engine para usted.

29
00:02:06,290 --> 00:02:07,940
‫Componente de movimiento de proyectiles.

30
00:02:07,940 --> 00:02:13,130
‫Este es el componente que nos preocupa y verá que dice Componente de movimiento de

31
00:02:13,130 --> 00:02:16,700
‫proyectil actualiza la posición de otro componente durante su tic.

32
00:02:16,700 --> 00:02:19,340
‫De forma predeterminada, moverá el componente de ruta.

33
00:02:19,370 --> 00:02:20,900
‫Ahora aquí está la inclusión.

34
00:02:20,900 --> 00:02:26,060
‫Y si continúa desplazándose hacia abajo, verá algunas de las variables que se pueden configurar en el componente

35
00:02:26,060 --> 00:02:26,810
‫de movimiento.

36
00:02:26,810 --> 00:02:30,740
‫Así que desplácese por esto y eche un vistazo y vea cuáles son las opciones.

37
00:02:30,770 --> 00:02:36,770
‫Ahora agregamos un componente de movimiento de proyectiles a nuestra clase de la misma manera que agregaríamos cualquier otro componente,

38
00:02:36,770 --> 00:02:39,350
‫lo que significa que ya sabe cómo hacerlo.

39
00:02:39,350 --> 00:02:45,980
‫Entonces, su desafío es ingresar a la clase de proyectil y agregar una variable de puntero de componente de movimiento

40
00:02:45,980 --> 00:02:49,310
‫de proyectil y exponer esto haciéndolo visible en cualquier lugar.

41
00:02:49,310 --> 00:02:54,140
‫Y de esa manera podemos editar fácilmente el componente de movimiento de proyectiles desde dentro de los planos.

42
00:02:54,150 --> 00:02:59,560
‫Ahora vas a construirlo en el constructor de proyectiles usando crear un subobjeto predeterminado.

43
00:02:59,570 --> 00:03:05,900
‫No olvide incluir el encabezado adecuado y establecer las variables de velocidad inicial y velocidad máxima del componente de

44
00:03:05,900 --> 00:03:06,920
‫movimiento del proyectil.

45
00:03:06,920 --> 00:03:12,650
‫Ahora elija sus propios valores para estos y configúrelos en el constructor y luego pruebe el juego.

46
00:03:12,650 --> 00:03:18,530
‫Vas a ajustar la velocidad inicial y la velocidad máxima en el panel de detalles seleccionando el componente en

47
00:03:18,530 --> 00:03:19,790
‫el plano del proyectil.

48
00:03:19,790 --> 00:03:25,910
‫Y esto le dará un poco de experiencia ajustando parámetros y experimentando como desarrollador.

49
00:03:25,910 --> 00:03:30,080
‫Así que pausa el video y crea el componente de movimiento de proyectiles ahora.

50
00:03:32,900 --> 00:03:33,180
‫Bueno.

51
00:03:33,230 --> 00:03:39,380
‫Así que estoy aquí en el proyectil H y probablemente agregó su componente en la sección privada.

52
00:03:39,380 --> 00:03:41,780
‫Entonces, si lo hiciste, tienes los instintos correctos.

53
00:03:41,780 --> 00:03:43,730
‫Vamos a hacer de esto una variable privada.

54
00:03:43,730 --> 00:03:44,180
‫Esta bien.

55
00:03:44,180 --> 00:03:48,040
‫Si no lo hizo, puede moverlo fácilmente a la sección privada si lo desea.

56
00:03:48,050 --> 00:03:54,560
‫Ahora, este será un componente de movimiento de proyectiles U, y eso es un puntero.

57
00:03:54,560 --> 00:03:58,610
‫Y podemos simplemente llamar a este componente de movimiento de proyectiles.

58
00:03:58,760 --> 00:04:05,300
‫Ahora, le daré una propiedad U y simplemente lo haré visible en cualquier lugar.

59
00:04:06,020 --> 00:04:08,210
‫Ahora, probablemente le diste una categoría.

60
00:04:08,210 --> 00:04:13,130
‫Si no, está totalmente bien, pero le daré una categoría y lo llamaré movimiento.

61
00:04:13,130 --> 00:04:15,650
‫Así que tenemos el componente de movimiento de proyectiles.

62
00:04:15,650 --> 00:04:20,660
‫Voy a omitir la declaración de avance y ver si puedo compilar ahora aquí

63
00:04:20,660 --> 00:04:24,290
‫en proyectil CP, voy a incluir el archivo de encabezado.

64
00:04:24,290 --> 00:04:31,340
‫Volviendo a la página de documentación, voy a copiar este include y simplemente pegarlo aquí en proyectil.

65
00:04:31,340 --> 00:04:34,250
‫Y ahora estoy listo para construir mi componente.

66
00:04:34,250 --> 00:04:42,440
‫Así que voy a decir componente de movimiento de proyectiles y voy a usar crear un subobjeto

67
00:04:42,440 --> 00:04:48,140
‫predeterminado y el tipo será su componente de movimiento de proyectiles.

68
00:04:48,470 --> 00:04:55,760
‫Y para el texto, simplemente voy a llamar así a este componente de movimiento de proyectiles.

69
00:04:55,760 --> 00:04:59,300
‫Ahí está mi punto y coma y ahí lo tenemos.

70
00:04:59,330 --> 00:05:07,850
‫Ahora, según las instrucciones, vamos a establecer el movimiento del proyectil, la velocidad máxima del componente, y le daré una velocidad inicial

71
00:05:07,850 --> 00:05:14,810
‫de, digamos, 1300 F. Esto es algo con lo que experimentaremos y, a través de las pruebas de

72
00:05:14,810 --> 00:05:17,600
‫juego, lo ajustaremos al valor correcto

73
00:05:17,600 --> 00:05:25,490
‫Ahora voy a establecer la velocidad inicial del componente de movimiento del proyectil, y lo estableceré en el mismo valor.

74
00:05:25,910 --> 00:05:31,190
‫Entonces, la velocidad inicial será qué tan rápido es el componente del proyectil cuando comienza.

75
00:05:31,190 --> 00:05:33,710
‫Y, por supuesto, nunca superará la velocidad máxima.

76
00:05:33,860 --> 00:05:35,750
‫Sigamos adelante y compilemos esto.

77
00:05:36,050 --> 00:05:42,200
‫De acuerdo, recibo un error de compilación y, si subo, veré que hace referencia al proyectil h.

78
00:05:42,350 --> 00:05:47,240
‫Volvamos al proyectil H y dice Proyectil H 27.

79
00:05:47,240 --> 00:05:51,020
‫Se refiere a la línea 27 y esa es esta línea de aquí.

80
00:05:51,140 --> 00:05:56,090
‫Y obtenemos que este componente de movimiento de proyectil no es miembro de un proyectil.

81
00:05:56,120 --> 00:05:59,990
‫Recuerde, este fue el tipo de error que vimos cuando no reenviamos la declaración.

82
00:05:59,990 --> 00:06:06,590
‫Entonces podemos reenviar fácilmente declarar esto con la palabra clave class y compilar nuevamente y obtendremos una

83
00:06:06,590 --> 00:06:07,400
‫compilación exitosa.

84
00:06:07,400 --> 00:06:12,830
‫Entonces, nuevamente, así es como podemos saber si un componente en particular está incluido o no de manera predeterminada.

85
00:06:12,830 --> 00:06:17,270
‫Y vimos que esto no es así con una compilación exitosa.

86
00:06:17,270 --> 00:06:18,890
‫Volvamos al editor.

87
00:06:19,280 --> 00:06:26,030
‫Bien, estoy de vuelta en el editor y voy a entrar en planos y actores y aquí está el proyectil BFP.

88
00:06:26,300 --> 00:06:28,190
‫Así que aquí proyectil NP.

89
00:06:28,190 --> 00:06:32,090
‫Ahora veo que el componente de movimiento de proyectiles está aquí.

90
00:06:32,390 --> 00:06:38,870
‫Y en el panel de detalles, puede ver debajo del proyectil que tenemos la velocidad inicial y la velocidad máxima

91
00:06:38,870 --> 00:06:43,280
‫y puede desplazarse y ver muchos otros parámetros que también podemos configurar.

92
00:06:43,400 --> 00:06:44,840
‫Así que juguemos a probar esto.

93
00:06:44,840 --> 00:06:49,190
‫Voy a darle al play y al clic izquierdo y comprobarlo.

94
00:06:49,190 --> 00:06:51,200
‫Nuestros proyectiles se están moviendo.

95
00:06:51,200 --> 00:06:55,550
‫Están volando por el aire y se detienen una vez que golpean algo.

96
00:06:55,550 --> 00:07:00,260
‫Ahora, eventualmente lo que nos gustaría hacer es hacer que exploten y causen daño.

97
00:07:00,260 --> 00:07:02,780
‫Pero este es un gran punto de partida.

98
00:07:02,780 --> 00:07:08,420
‫Ahora movámonos dentro del rango de fuego y veamos si las torretas generarán un proyectil.

99
00:07:08,420 --> 00:07:09,740
‫Y por supuesto que no.

100
00:07:09,740 --> 00:07:13,640
‫Y la razón es porque tenemos esa subclase TW de variable.

101
00:07:13,640 --> 00:07:19,310
‫Entonces, si se pregunta por qué las torretas no estaban generando proyectiles, es posible que no haya configurado

102
00:07:19,310 --> 00:07:19,730
‫eso.

103
00:07:19,730 --> 00:07:25,370
‫Así que sigamos adelante y entremos en estanques y emitamos pitidos, torreta y abramos el plano completo.

104
00:07:25,370 --> 00:07:29,960
‫Editor Y colocamos la clase proyectil en la sección de combate.

105
00:07:29,960 --> 00:07:37,790
‫Esta es nuestra subclase de, por lo que si configuramos esto en proyectil BP ahora, nuestra torreta también debería comenzar a

106
00:07:37,790 --> 00:07:38,780
‫generar proyectiles.

107
00:07:38,780 --> 00:07:41,960
‫Así que entremos en el campo de tiro y ahí lo tenemos.

108
00:07:41,960 --> 00:07:43,910
‫Nos está disparando proyectiles.

109
00:07:43,910 --> 00:07:46,550
‫Así que esto se ve increíble.

110
00:07:47,030 --> 00:07:48,950
‫Así que ahora tenemos proyectiles.

111
00:07:48,950 --> 00:07:51,230
‫Así que echemos un vistazo a nuestro plano de secciones.

112
00:07:51,230 --> 00:07:56,900
‫Ya hemos creado un tanque que puede moverse por todo el mundo y ahora estamos manejando la entrada con las

113
00:07:56,900 --> 00:07:59,150
‫teclas WASD y los clics del mouse.

114
00:07:59,150 --> 00:08:05,510
‫Creamos una clase de torreta enemiga, la llamamos torre en C++ y agregamos funcionalidad de disparo

115
00:08:05,510 --> 00:08:06,590
‫con proyectiles.

116
00:08:06,590 --> 00:08:11,240
‫Ahora, a continuación, debemos manejar el daño a la salud y la destrucción en este juego.

117
00:08:11,240 --> 00:08:15,770
‫Esos son nuestros próximos pasos y aparecerán en los próximos videos.

118
00:08:15,770 --> 00:08:21,890
‫Entonces, ahora que hemos agregado un componente de movimiento de proyectiles, ahora tenemos proyectiles reales.

119
00:08:21,890 --> 00:08:26,990
‫Los veré en el próximo video cuando comencemos a hablar sobre cómo podemos hacer que

120
00:08:26,990 --> 00:08:29,270
‫estos proyectiles exploten y causen daños.

121
00:08:29,690 --> 00:08:30,650
‫Te veré pronto.

