Implementar un sistema de daños y salud en Unreal Engine 5

Voy explicar cómo puedes emplear el sistema de daños por aquí en unreal entonces aquí puedes ver que tengo una barra azul que hace referencia a lo que es la salud del jugador y estas cajas son similares a las cajas Nitro:

UI

Que tenemos en Crash entiéndase que cuando las toca explota ya lo del sonido y la vibración de la pantalla lo explicaré en otro video pero lo que nos importa es que tal cual puedes ver al menos decremento ahí la barra de salud ya también esto parte de la barra de salud y demás te lo voy a explicar luego ya que bueno es opcional a esto pero ya visto aquí la demostración vamos a ver qué es lo que hacemos el blueprint.

Blueprint para hacer daño

De esto sería el que tengo por aquí abierto aquí lo puedes ver doy aquí a editar blueprint aquí lo tenemos y lo que nos interesa es justamente aquí la parte de colisión tal cual puedes ver al igual que siempre ya que la bomba se activa es al momento de la colisión hacemos un poco lo mismo en este caso estamos casteando lo que sería nuestro personaje esta parte de que cuando falla también puedo probar esto es opcional ya depende cóm lo quieras implementar pero es para hacer el efecto fáfaga:

Aplicar dano

Entonces ya eso depende de cómo lo quieres implementar coloco aquí el dual en el DoOne esto sería también un poco opcional pero tengo entendido que haría esto un poquito más eficiente Aunque ente esto no importa lo que hagas Siempre se va a ejecutar una sola vez porque como puedes ver el actor el blueprint desaparece entonces siguiendo un poco aquí con la explicación esto ponlo si quieres y si no lo quieres no lo pongas aquí lo que hago Bueno estoy ya es efecto de lo que hago es reescalar el actor tal cual puedes ver pero eso no viene ahorita el caso hagas el efecto aquí la magia es la el nodo llamado apply damage.

Apply Damage

Que lo que hace es tal cual indica su nombre aplicar un daño al jugador en este caso ya yo tengo un daño aplicado que le coloco aquí de 25 la salud del jugador sería de 100 viene siendo un poco lo tradicional aunque eso lo Puedes configurar como tú quieras y es básicamente eso aplicar daño y también le tenemos que indicar a quién le estamos aplicando un daño que viene siendo la otra parte importante de aquí aparte del valor que como puede suponer es a nuestro jugador que es el que estamos casteando acá, el jugador o player fíjate que aquí puedes ver la barra o la línea azul que llega hasta aquí hasta damage actor ya que otra vez el actor al cual le vamos vamos a aplicar un daño viene siendo al jugador al menos en base a nuestra implementación entonces ya con esto terminaría toda la lógica al elemento que vamos a utilizar para aplicar daño al jugador.

Aplicar el daño al jugador

Vamos al jugador ya que ahora tenemos que recibir ese daño y a lo igual que ocurre con otros eventos por ejemplo los eventos personalizados aquí tenemos un evento llamado event Any damage el cual viene junto con este y se va a invocar automáticamente cuando llama este nodo con el actor correspondiente que en este caso es el de nuestro jugador entonces otra vez esto se va a llamar gracias a que tenemos aquí un daño aplicado al jugador y aquí estamos configurando simplemente estableciendo este nodo en el jugador un evento para obtener los daños que todavía no sido aplicado a Player es decir si aquí no hacemos nada vas a ver que la barra de salud no deciende, por lo tanto ahí también lo puedes aprovechar para hacer cualquier otro tipo de efectos por ejemplo en Crash era la máscara cuando agarrabas la tercera máscara que tenías un modo invencible Por cierto tiempo pudieras hacer algo similar aquí en fin en mi caso no tengo nada de eso lo que estamos haciendo es en este casollamar una función interna:

Recibir dano

La salud no es más que una variable que por defecto es 100 es así de simple en este caso siempre se trabaja con flotantes es lo único que no me gusta mucho hubiera preferido en entero pero en fin así funcionan en la interfaz gráfica cuando estamos estableciendo un número pero ya eso lo vemos en otro video qué hace esta función o este nodo ya que a la final lo encapsulé como si fuera una función verificamos aquí la salud la decrement aquí siempre para mantenerlo en rango es decir 100 es lo máximo y cero viene siendo lo mínimo entonces ahí evitamos casos bordas que siir por ejemplo el usuario tenía bueno el jugador tenía 15 de salud y la caja le quitó 25 que daría negativo no tiene sentido entonces hacemos aquí un clamp para evitar de que salga de rango entonces aquí preguntamos si está vivo aquí tengo que mejorar el nombre que es básicamente el negado donde si está muerto aquí también tenemos una variable la puedes ver que indica si el jugador está muerto o no entonces obviamente esto retorna un true o false dependiendo del caso si dead es true significa que está muerto entonces aquí hago el negado por lo mencionado volvemos por acá aquí donde establecerías ya que esto simplemente es una comprobación y en base a la misma puedo establecer que el jugador ha muerto pero aquí básicamente lo que nos interesa es decrementar para eso aquí otra vez recibimos la cantidad que es lo que vamos a decrementar y aquí se lo establecemos y y finalmente retornamos Entonces ya a partir de aquí verificamos si está muerto ya que parte de la comprobación aquí es verificarse el mismo Está muerto entonces Y esto es ya para terminar el juego hacer sea lo que sea que quieras hacer entonces aquí en caso de que la vida sea no debería de suceder pero menor a cero no me gusta colocar comprobaciones exactas entonces prefiero colocar un menor igual pero aquí perfectamente se podría emplear un Igual igual gracias al clam que te mostraba antes aquí verificamos si la salud es cero o menos y si es así entonces la colocamos el jugador como muerto creo que la coloqué doble la comprobación pero bueno en alguna parte tienes que colocar ese de en true si ya no tiene salud entonces finalmente aquí siguiendo un poco lo que es el árbol de de ejecución si el jugador está muerto simplemente lo que hace es reiniciar el nivel si no simplemente decrementa la barra de salud y luego se actualiza por la interfaz gráfica pero eso te lo muestro en otro video de momento lo que te quería Mostrar era precisamente Cómo era la parte del sistema de salud que se puede resumir en simplemente el evento para aplicar daño hay varios pero este sería como quien di más otra vez aquí le pasamos al elemento que le queremos al actor que le queremos aplicar el daño y la cantidad de daño Y
desde ese actor simplemente instanci este even damage aquí lo puedes encontrar siempre pendiente con esto que lo puedes fesactivar y no sé si no aparece porque ya lo tengo aquí agregado Ah no aquí está  damage ahí está ya está agregado y lo que tienes que hacer es tus comprobaciones en base a la de tu juego pero lo importante es que en alguna parte incrementes el valor de la salud que viene siendo otra vez el importante y para mostrarte que al menos al momento como lo tengo ahorita lo que hace es recargar el nivel que es este nodo simplemente abre el nivel actual aquí obtiene el nombre del nivel actual y simplemente lo recarga al menos así lo tengo de momento luego tuviera que descargar un checkpoint o algo por el estilo pero otra vez es lo que tengo ahorita vamos a matar al jugador voy a colocarle por ejemplo aquí que no aquí no le puedo variar la cantidad ya no lo establecid como variable entonces voy a copiarlo acá alejarlo un poquito Aquí también para el daño para evitar porque ahorita un extra ahorita por ejemplo no va a suceder el efecto ráfaga si sucedió Ho Qué lástima pero en caso de que no quieras escalar o sucede el efecto Ráfaga por la escalación de la caja pero también tenemos uno ahí una forma de aplicar daños que es mediante una circunferencia lo cual es diferente a escalar al actor para que haga contacto con el siguiente y ahí hacer la comprobación previa en caso de que no quieras escalar como quien dice al elemento que está cionando daño sobre el jugador voy a intentar matarlo y aquí reinicia nivel que fue justamente la implementación que tenía por aquí así que pues nada sin más que decir nos vemos en otro video.

- Andrés Cruz

In english

Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz En Udemy

Acepto recibir anuncios de interes sobre este Blog.

!Cursos desde!

10$

En Udemy

Quedan 4d 18:30!


Udemy

!Cursos desde!

4$

En Academia

Ver los cursos

!Libros desde!

1$

Ver los libros
¡Hazte afiliado en Gumroad!