Unreal Engine tiene un sistema de daño integrado que permite aplicar y recibir daño en videojuegos tanto multijugador como locales. Este sistema se basa en eventos que se ejecutan en el servidor y que se comunican con cada cliente para afectar a los actores del juego, como los personajes, enemigos, players, vehículos etc
Cuando creamos un proyecto que no es multijugador el servidor y el cliente son el mismo por lo que el sistema de daño funciona tanto multijugador como solo.
Con la idea de facilitar la tarea de dañar todos los actores en Unreal Engine tienen definido un boolean llamado Can be damaged que determina si el actor puede ser dañado o no.
Esta implementación esta en la clase base Actor , así que todos los que heredan de ella poseen esta propiedad*.
Hacer y recibir daño
Usarlo es muy sencillo solo requiere de dos agentes, uno va a ser el que cause el daño y otro es el que lo recibe.
Por ejemplo vamos a crear una zona de fuego.
Podemos crear un collision que detecte quien entra en la zona para después aplicarle daño.
El evento del servidor Apply Damage es una función estática que se puede llamar desde cualquier blueprint
Por otro lado implementaremos que sucede cuando se recibe el daño, por ejemplo en el Player Character llamamos al evento AnyDamage el cual se dispara cuando recibe un daño, el player character tiene marcado Can be damage en true por el constructor del Character
Recibiendo daño
Con Event AnyDamage se declara que va a pasar cuando se reciba el daño, cualquier daño, en este caso va a ser el de la caja, podremos realizar mas comprobaciones para controlar quien generó el daño.
El resultado es que si el jugador entra en el área del daño llama a la función Apply Damage del servidor y todos los que tengan Event AnyDamage reciben daño
No confundir daño con live span
Live span esta pensado para crear una cuenta atrás, un tiempo de vida de un objeto, tras el cual se destruye solo, es independiente del daño.
Resumen:
Se necesita un elemento que haga daño Apply Damage, otro que lo reciba AnyDamage y la capacidad de recibir daño activada, Can be damaged true.
*Sobre la herencia del daño
La modernización de la programación hace que hoy día sea mas correcto tener un componente separado para evaluar el daño o implementar un interface que directamente hacer que TODOS los actores sean susceptibles de ser dañados, cuando muchos de ellos jamás usaran esa propiedad, sin embargo gana en facilidad y rapidez al tener ya el sistema implementado.
The ad is displayed on the page
current post: Unreal Engine 5 sistema de daño (Damage system) introducción, ID: 3400
Ad: Anuncio2 (2573)
Placement: After Content 2 (after-content_2)
Display Conditions
Ad | wp_the_query | |
---|---|---|
term_id | 0 | |
taxonomy | 0 | |
is_main_query | 1 | 1 |
is_rest_api | 0 | |
page | 0 | 1 |
numpages | 0 | 1 |
is_archive | 1 | |
is_search | 1 | |
is_home | 1 | |
is_404 | 1 | |
is_attachment | 1 | |
is_singular | 1 | 1 |
is_front_page | 1 | |
is_feed | 1 |
Find solutions in the manual