Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: deunido en Marzo 05, 2010, 02:52:58 PM

Título: Movimiento seg?n angulo del sprite
Publicado por: deunido en Marzo 05, 2010, 02:52:58 PM
Holas a todos.

Ya se que existen instrucciones espec?ficas para hacerlo, pero alguien sabe como calcular la coordenada X y la coordenada Y de un sprite que puede tener un ?ngulo de 0 a 360 y una speed de 0 a 8.

Para una ejercicio de mi hijo necesito el c?digo para hacerlo.
Supongo que es utilizando senos y cosenos, pero lo he probado de varias maneras y no me va.

El sprite se mueve en funci?n de las cuatro flechas.

derecha decrementa angulo
Izquierda incrementa
Arriba incrementa speed
abajo decrementa speed

Muchas gr?cias por vuestros aportes...
Título: Re: Movimiento seg?n angulo del sprite
Publicado por: Alfonsos1 en Marzo 05, 2010, 04:37:23 PM
hay unas funciones para calcular las cordenadas del extremo de un vector a partir de su angulo y su modulo

lengthdir_x(modulo,direccion)
lengthdir_y(modulo,direccion)

si utilizas las variables direction y speed para calcular la posicion en la que el objeto se encontraraen el proximo step seria asi:

futura_pos_x = x+lengthdir_x(speed,direction);
futura_pos_y = y+lengthdir_y(speed,direction);


Citarde un sprite que puede tener un ?ngulo de 0 a 360

el angulo del sprite (image_angle) solo es el angulo de la imagen, no es la direccion a la que se mueve la instancia, la variable que determina a que direccion se mueve una instancia es direction
Título: Re: Movimiento seg?n angulo del sprite
Publicado por: deunido en Marzo 05, 2010, 09:24:23 PM
Gracias Alfonso1 por tu r?pida respuesta, pero calcular el movimiento en GameMaker8 ya lo se hacer...
Yo quiero la f?rmula matem?tica para calcular la X y la Y en otro lenguaje.
Mi hijo est? haciendo unas pr?cticas en visual basic y esas funciones no la tiene.
Yo se que se puede calcular con los senos y cosenos... pero no se como.
Título: Re: Movimiento seg?n angulo del sprite
Publicado por: Alfonsos1 en Marzo 05, 2010, 11:12:12 PM
senoDelAngulo*modulo = lengdir_y(modulo,direccion)
cosenoDelAngulo*modulo = lengdir_x(modulo,direccion)
Título: Re: Movimiento seg?n angulo del sprite
Publicado por: deunido en Marzo 06, 2010, 03:01:01 PM
He probado con esto pero no hace un movimiento muy fino que digamos..

x=x+speed*(cos(rotacion))
y=y+speed*(sin(rotacion))

?A alguien se le ocurre algo mejor?
Título: Re: Movimiento seg?n angulo del sprite
Publicado por: Alfonsos1 en Marzo 06, 2010, 04:51:37 PM
que vendria a ser rotacion?


de esta manera deveria funcionar bien:
x=x+speed*cos(direccion))
y=y+speed*sin(direccion))

Título: Re: Movimiento seg?n angulo del sprite
Publicado por: soccer2008 en Marzo 07, 2010, 11:28:03 PM
Evento Create:

direct=0;


Evento draw:

draw_line(x+12,y,x+12+(cos(degtorad(direct))*100),y-(sin(degtorad(direct))*100));


Evento Step:

if (keyboard_check(vk_left))direct-=2;
if (keyboard_check(vk_right))direct+=2;


Ojo:
degtorad(x) Converts degrees to radians.



Bueno al gusto del cliente  XD XD XD