Doom Wiki
Registrarse
Advertisement
Doom Wiki

Los Ataques cuerpo a cuerpo (melee attack) (*) están en contraste con los ataques a distancia, realizados a largo alcance, tales como disparar balas, lanzar bolas de fuego o disparar cohetes.

(*) En inglés Melee, es una palabra tomada prestada del idioma francés (pronunciado /mε'lε/), que significa mano-a-mano, combate cuerpo a cuerpo.

Los ataques cuerpo a cuerpo se presentan en Doom, Heretic, Hexen y Strife. Un buen número de los monstruos de Doom puede realizar ataques cuerpo a cuerpo en la forma de zarpazos, mordidas o puñetazos.

Demonios y espectros sólo son atacantes cuerpo a cuerpo, mientras que otros tienen un combate tanto cuerpo a cuerpo como de ataques a distancia: estos son el diablillo, Cacodemonio, Revenant, Caballero del infierno y Barón del Infierno. Los jugadores pueden realizar ataques cuerpo a cuerpo usando los puños o la motosierra. Las almas perdidas pueden ser vistos únicamente como atacantes cuerpo a cuerpo, pero en realidad en el juego se los trata como proyectiles vivientes a todos los efectos, excepto como objetivos en las luchas internas monstruo.

Técnica[]

En el código fuente de Doom, hay una constante definida como MELEERANGE definida como 64 * FRACUNIT. Para un jugador, esto significa que un ataque cuerpo a cuerpo tendrá éxito sólo si el objetivo está a no más de 64 unidades de mapa de distancia.

Utilizando el ángulo con el que el jugador se enfrenta al enemigo, la distancia en unidades de mapa MELEERANGE se determinan trigonométricamente. Entonces la función hitscan se invoca, que puede dañar la primera cosa vulnerables (si la hay) a lo largo de la línea a ese punto.

Para los monstruos que tienen ataques cuerpo a cuerpo, se llama a la función P_CheckMeleeRange, y devuelve verdadero si un ataque cuerpo a cuerpo tendrá éxito. Si es así, el daño se inflige de inmediato; si no, se lanza un ataque a distancia (si lo hay).

En P_CheckMeleeRange, P_AproxDistance es llamada primero. (La distancia aproximada se usa, presumiblemente, para evitar una evaluación de raíz cuadrada que requiere mucho tiempo que requeriría calcular la distancia con mayor precisión). Luego, se ejecuta el siguiente código:

if (dist >= MELEERANGE-20*FRACUNIT+pl->info->radius)
return false;

Esto devuelve falso si la distancia calculada desde el centro del atacante hasta el borde más cercano del objetivo es mayor o igual a 44 unidades de mapa. A excepción de las luchas internas de monstruos, el objetivo será un jugador (con radio 16) y los ataques cuerpo a cuerpo solo pueden ocurrir cuando la distancia calculada es inferior a 60 unidades de mapa. Finalmente, se llama a P_CheckSight para garantizar que no haya nada entre el atacante y el objetivo.

Véase también[]

Advertisement