Diferencia de angulos

Publicado por 3dgeminis, Julio 20, 2018, 04:05:59 AM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

3dgeminis

Autor: 3dgeminis

Versión de GM utilizada:GM8:

Descripción: Devuelve la diferencia entre 2 angulos.
Hace lo mismo que la funcion angle_difference de Game Maker Studio y sirve para GM8 y versiones anteriores.

Para que el script funcione correctamente, el valor de los angulos debe estar entre 0 y 360 grados.

Código del Script:
[gml]
angulo1=argument0 ///primer angulo
angulo2=argument1 ///segundo angulo

dif_ang=(angulo2 - angulo1) ///se restan los angulos

///el valor de dif_ang se fija entre los angulos 180 y -180
if dif_ang<-180 {dif_ang+=360}
if dif_ang>180 {dif_ang-=360}

return dif_ang ///devuelve la diferencia entre los angulos
[/gml]

Ejemplo de utilizacion:
[gml]
///Girar un sprite hacia donde apunta el raton

///STEP EVENT
ang=point_direction(x,y,mouse_x,mouse_y)

if image_angle>360 {image_angle-=360}
if image_angle<0 {image_angle+=360}

dif=diferencia_angulos(image_angle,ang)

image_angle+=min(abs(dif), 5)*sign(dif)
[/gml]

somnus

sigues utilizando GM8?. se sigue vendiendo?
Es Mejor No Saber Porque Funciona, Que Saber El Porque No Funciona...
Tienes alguna duda con "Game Design" o de videojuegos en general, contactamente mas facil en twitter @pavulzavala

3dgeminis

Aun lo sigo usando 8), y no soy el unico. Me siento mas comodo al usarlo que las nuevas versiones(todavia no me acostumbro al GMS)

brunoxzx

Me gusta está función, es de las más importantes cuando programas una IA. Te comento que existe esta versión de una linea que era muy usada antes que existiera el gm:studio, la dejo por aquí ya que es interesante el funcionamiento:

[gml]
/// angle_difference(angle1, angle2)
//
//  Returns the relative angle [-180..180] between the given angles.
//
//      angle1      1st direction in degrees
//      angle2      2nd direction in degress
//
/// GMLscripts.com/license
{
    return ((((argument0 - argument1) mod 360) + 540) mod 360) - 180;
}
[/gml]

Powered by EzPortal
SMF spam blocked by CleanTalk