‫Hola y bienvenido.
‫En esta conferencia, vamos a infligir daño a este actor aquí.
‫Vamos a hacer eso anulando un método virtual llamado recibir daño en el actor.
‫Y pueden ver en el registro aquí, tenemos la salud disminuyendo a medida que disparo a este personaje
‫hasta cero y luego se detiene en cero, sin entrar en números negativos.
‫Así que vamos a sumergirnos y ver cómo se hace eso.
‫Entonces, si bien actualmente podemos dañar a los actores que golpeamos aquí, como este tipo,
‫en realidad no estamos recibiendo ese daño.
‫Así que aquí es donde entran los métodos virtuales de la última lección, porque al igual que comenzar a jugar
‫o tecnología, queremos poder recibir daño en un actor.
‫Ahora, afortunadamente, si vas al actor Dot H y miras un poco aquí, puedes ver que
‫existe este método virtual de recibir daño.
‫Ahora bien, esto también se puede hacer con eventos y posiblemente lo hayas visto así antes de registrarte
‫para eventos.
‫Ahora lo que voy a hacer es simplemente una forma diferente de hacer daño, en la que en realidad tenemos daño
‫almacenado contra el actor en lugar de un componente.
‫Y una manera fácil de recibir ese daño es a través de un método virtual aquí.
‫Y este es el método virtual que vamos a anular.
‫Así que voy a seguir adelante y copiar esto y pasar a nuestro actor en particular, que es el tirador.
‫Va a ser rápido.
‫Puede buscar al tirador.
‫Carácter Punto H.
‫Y lo único que quiero comprobar es dónde entra esto, el actor punto H.
‫Entonces, si nos desplazamos hacia arriba, deberíamos poder ver en qué sección estamos aquí.
‫Así que voy a desplazarme hacia arriba hasta encontrar que, ya sea que estemos en público o lo que sea, estamos en la
‫sección pública.
‫Así que esto debería estar en la sección pública aquí también.
‫Así que voy a pegarlo debajo de nuestra tecnología y configurar el componente de entrada del jugador
‫en el tirador dot h y simplemente pegarlo.
‫Y como dije en la última lección, puede usar override para asegurarse de que realmente está sobrescribiendo un método virtual
‫del padre y no es necesario tener virtual al frente aquí, pero lo mantendremos de todos
‫modos.
‫Y aquí puede ver todos los datos que ingresan para sufrir daños.
‫Tenemos una cantidad de daño, los eventos de daño y el controlador que está causando el daño, el instigador y la
‫causa del daño.
‫Todas esas cosas que habíamos pasado del arma están surgiendo aquí también.
‫Eso es genial.
‫Ahora, si seguimos adelante y hacemos un cambio de control, P crea la implementación o copia y pega, entonces podemos
‫ir y hacer la implementación para recibir daño.
‫Pero lo primero que hay que tener en cuenta es que cada vez que anulamos
‫algo, queremos pensar en llamar a la versión de la clase principal de tomar daño porque puede haber alguna implementación
‫allí que deba ejecutarse.
‫Así que eso es lo que vamos a hacer.
‫Hacemos esto siempre.
‫Lo hemos hecho con tecnología.
‫Lo hemos hecho con Begin Play.
‫Puede ver que siempre tenemos este súper genial al principio, y eso es porque cuando
‫anulamos un método, lo reescribimos por completo, eliminamos por completo ese comportamiento.
‫Entonces, si queremos ese comportamiento, que normalmente hacemos, entonces siempre debemos comenzar con un genial a
‫súper.
‫Así que vamos a hacer un buen daño.
‫Eso va a tomar la cantidad de daño.
‫Así que aquí es donde se pone un poco tedioso.
‫Lamentablemente, mi herramienta de autocompletar no hace esto por nosotros.
‫Evento de daño.
‫Entonces, ¿cuál fue el siguiente?
‫Teníamos el control.
‫Entonces, el instigador del evento, es solo una copia.
‫Y luego tenemos al causante del daño, que es el actor.
‫Entonces, todo eso se llama a la implementación de los padres de tomar daño.
‫Y lo único es que esto tiene un tipo de retorno.
‫Así que se aplicó el daño real.
‫Así que vamos a flotar.
‫Daño aplicado?
‫¿Es el valor de retorno de tomar daño?
‫Entonces, ¿vamos a mantener ese daño aplicado allí?
‫Y, de manera realista, será lo mismo que la cantidad de daño en nuestro caso de uso particular, pero
‫no necesariamente, por lo que usaremos el daño aplicado.
‫Lo siguiente que queremos hacer es conservar la información sobre cuánta salud tenemos realmente.
‫Ahora, la forma en que voy a hacer esto es con dos variables aquí.
‫La primera es que voy a hacer ambas propiedades nuevas porque quiero que la salud sea visible en el
‫inspector, al menos por ahora.
‫Y vamos a tener la propiedad del primer año con la máxima salud.
‫Eso es a lo que inicializamos la salud inicialmente.
‫Por lo tanto, su propiedad, será una edición predeterminada solo porque se usará al comenzar la reproducción.
‫Entonces, cambiar ese valor de salud máxima después del hecho, no tendrá ningún impacto.
‫Así que Max Health, voy a configurar Max Health en 100 aquí y luego vamos a tener otra propiedad aquí, que, como dije,
‫será una propiedad de un año solo para que podamos inspeccionar eso.
‫Y voy a tener eso como visible en cualquier lugar.
‫Pero no editable porque no queremos poder cambiar esa salud, al menos no por el momento.
‫Es posible que desee eso para fines de depuración, pero yo no.
‫Así que vamos a tener salud aquí y al comenzar a jugar vamos a configurarlo para que esa salud.
‫Es igual a la salud máxima.
‫Así que empezamos con el spawn.
‫Tenemos nuestra máxima salud y luego podemos empezar a disminuir.
‫Establece tiempo para un desafío para que disminuyas la salud del personaje.
‫Así que vas a usar el daño aplicado aquí en lugar de la otra opción aquí.
‫Así que tenemos nuestros brotes, personaje, punto, CP que reciben daño, tenemos una cantidad de daño, pero en realidad queremos
‫que se aplique el daño que proviene de recibir daño porque eso podría
‫haberse reducido mediante algún proceso en el padre.
‫Así que hacemos eso.
‫Luego, reducimos el valor de la salud y registramos los resultados solo por simplicidad para que puedas verificar
‫que cuando disparas a ese aliado, su salud está disminuyendo y luego lo pruebas.
‫Así que pausa el video y pruébalo.
‫Bien, bienvenido de nuevo.
‫Así que démosle una oportunidad.
‫Entonces, la salud, básicamente queremos disminuir eso por el daño aplicado.
‫¿Pero es eso suficiente?
‫Bueno, ¿y si el daño aplicado es mayor que la cantidad de salud que nos queda?
‫Bueno, en ese caso, probablemente queramos que el daño aplicado sea esa cantidad de salud.
‫Entonces, la forma en que podemos hacer esto es que podemos decir que el daño se aplicó.
‫Debe ser igual a los puntos matemáticos f.
‫Hombres de la salud.
‫Y el daño aplicado.
‫Así que este es el daño que básicamente queremos aplicar.
‫Así que vamos a seguir adelante y cambiarle el nombre en lugar de llamarlo daño aplicado.
‫Voy a llamarlo el daño a aplicar.
‫Daño para aplicar como Saigón, cambie el nombre de aquí y luego el daño para aplicar contra la salud menos el
‫daño para aplicar que tenga sentido.
‫Y básicamente, en el peor de los casos, será la salud.
‫Así que eso va a poner nuestra salud a cero.
‫Y recuerda, se supone que debemos devolver el daño que realmente aplicamos.
‫Entonces, para devolver el daño para aplicar, que ahora se ha aplicado y finalmente queremos un registro de UII al final aquí, que
‫solo será una advertencia para que podamos verlo.
‫Y quiero que esta sea la salud que queda aquí y será un porcentaje F, 2% F minúscula para mostrar un
‫flotador.
‫Y luego podemos aparecer en la salud allí mismo y seguir adelante y presionar compilar.
‫Ahora.
‫El mío se compiló después de corregir un punto y coma faltante.
‫Aquí, vamos y asegurémonos de que tenemos herramientas de desarrollador de ventanas y queremos el registro de salida aquí para que podamos
‫ver ese mensaje de registro.
‫Y voy a seguir adelante y presionar reproducir e intentar dispararle a este personaje si le disparo.
‫Ahí tienes
‫La salud dejó 90, 76, t, bla, bla, bla, todo el camino hasta cero.
‫Y si sigo disparando, no vamos por debajo de cero debido a ese f math punto min.
‫Eso me dice que tenemos nuestra salud configurada correctamente.
‫Solo otra forma de hacerlo en lugar de hacerlo dentro de un componente.
‫Puede hacerlo dentro del actor, así como algunos pros y contras de ese enfoque.
‫Eventualmente, es posible que desee eliminar esto en componentes separados para poder reutilizarlo en diferentes
‫elementos.
‫Pero S es solo otra forma, como digo ahora, porque este personaje no se ve particularmente muerto después de que
‫lo derribamos hasta cero salud.
‫Necesitamos arreglar las animaciones para soportar eso.
‫Así que veremos eso en la próxima conferencia y los veré allí.