Juicio automático de la dirección de la matanza del monstruo del juego de RPG

El asistente del juego RPG quiere luchar automáticamente contra los monstruos

Después de obtener la información más reciente sobre monstruos, debes enfrentarte al monstruo.

De lo contrario, no hay forma de atacar y liberar habilidades cuando te enfrentas a monstruos, etc.

Hay muchas situaciones en la dirección del diseño del juego.

La primera

Juegos antiguos 2D, 2.5D como Legends

Su orientación es generalmente muy fija 4 orientaciones u 8 orientaciones

Es decir, no está orientado libremente y solo puede orientarse en cuatro direcciones, este, sur, norte y oeste.

O este, noreste, norte, noroeste, oeste, suroeste, sureste y 8 direcciones

Entonces el cálculo de la orientación también es muy simple.

Solo calcula la relación entre las coordenadas del monstruo y el personaje.

Por ejemplo

Monstruo X > personaje X && monstruo Y > personaje Y

Luego, si quieres enfrentar al monstruo, simplemente modifica el valor de orientación para mirar hacia el noreste.

Generalmente, las 8 orientaciones están representadas por 8 valores numéricos de 0-7

el segundo

Orientación libre versión 2D

Se dice que es una versión 2D de orientación libre, pero de hecho muchos juegos 3D la están usando

Una comprensión muy simple es que el juego es en 3D, pero el personaje solo puede girar en un plano 2D, y la cabeza no se puede levantar y pasar por alto.

Por ejemplo, QQ Viaje hacia el oeste

En general, el valor de orientación de este juego se organiza uniformemente en el sistema de coordenadas de 0 a un valor

Podemos calcularlo fácilmente calculando su ley cambiante

Por ejemplo, QQ Westward Journey aumenta en sentido contrario a las agujas del reloj desde el eje X positivo hasta 0

Se ha aumentado a 256 y luego se superpone con el eje X y se convierte en 0

Entonces conocemos la ley de su cambio, podemos implementar el código.

como sigue

DWORD Call_Angle hacia el monstruo (FLOAT x, FLOAT y)

{

atributo de carácter T A;

AC inicializar ();

FLOTANTE X=A.fX;

FLOTANTE Y=A.fY;

PALABRA D B=0;

if (x>X&&y>Y)//primer cuadrante

{

B=(DWORD)(atan2(yY,xX)/3.1415926 *180);//ángulo real

B=B*64/90 ;//Misma relación ángulo de juego

B=0+B;

}

if (x<X&&y>Y)//segundo cuadrante

{

B=(DWORD)(atan2(yY,Xx)/3.1415926 *180);

B=B*64/90;

B=128-B;

}

if (x<X&&y<Y)//tercer cuadrante

{

B=(DWORD)(atan2(Yy,Xx)/3.1415926 *180);

B=B*64/90;

B=128+B;

}

si (x>X&&y<Y)//cuarto cuadrante

{

B=(DWORD)(atan2(Yy,xX)/3.1415926 *180);

B=B*64/90;

B=256-B;

}

devolver B;

}

tercero

a través de la primera y la segunda

Podemos sentir claramente la actualización de 8 posiciones a varias posiciones.

Pero esto todavía no es suficiente, no importa en cuántas partes divida el sistema de coordenadas o no la libertad absoluta

entonces que debemos hacer?

El juego inventa una orientación más libre.

Por ejemplo, Tianya Mingyue Knife
inserte la descripción de la imagen aquí
tiene ese concepto de diseño

Toma al personaje como el centro y pasa un círculo con un radio general de 1 (no importa cuánto sea, podemos multiplicarlo)

Conecta la línea con el monstruo, la intersección del círculo es nuestra dirección.

Entonces esto se convierte en una orientación libre, puedes ser tan preciso como quieras

También es muy simple de calcular.

El origen del carácter, el punto de intersección del círculo, la línea perpendicular desde el punto de intersección hasta el eje X y el punto de intersección del eje X forman un triángulo

El origen del personaje, el punto de coordenadas del monstruo, el punto de intersección de la línea vertical desde el punto de coordenadas del monstruo al eje X y el eje X forman un triángulo

2 triangulos son triangulos semejantes

Luego el triangulo pequeño h/1 = (Y monstruo - Y personaje)/distancia

Triángulo pequeño l / 1 = (X monstruo - X personaje) / distancia

Las h y l obtenidas son las coordenadas de nuestra intersección circular.

Hay otras formas de sublimación

es la orientación de la versión 3D

Entonces ya no será un círculo.

es una pelota 3d

Pero el algoritmo permanece sin cambios.

solo ha cambiado la distancia

Triángulos semejantes siguen siendo triángulos semejantes

h=(Y monstruo-Y personaje)/distancia

l=(X monstruo-X personaje)/distancia

z=(Z monstruo-Z personaje)/distancia

Entre ellos distancia=sqrt((persona.fX-fX) (persona.fX-.fX)+(persona.fY-fY) (persona.fY-fY)+(persona.fZ-fZ)*(persona.fZ- fZ ));

cuatro

Generalmente utilizado por juegos FPS

También es el mismo ángulo que el transbordador espacial, etc.

es el ángulo de picado, el ángulo de balanceo y el ángulo de rotación

El ángulo de rotación representa su propia rotación, que es casi inútil en el juego.

Entonces el ángulo de picado representa el ángulo entre la dirección del cañón y el plano horizontal

El ángulo de giro representa el ángulo en el que la dirección de la pistola y la línea central giran hacia la izquierda y hacia la derecha.

El método de cálculo puede referirse al segundo método de arco tangente

Supongo que te gusta

Origin blog.csdn.net/douluo998/article/details/130856251
Recomendado
Clasificación