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...

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

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.

#3 Marzo 05, 2010, 11:12:12 PM Ultima modificación: Marzo 05, 2010, 11:14:33 PM por Alfonsos1
senoDelAngulo*modulo = lengdir_y(modulo,direccion)
cosenoDelAngulo*modulo = lengdir_x(modulo,direccion)

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?

que vendria a ser rotacion?


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


#6 Marzo 07, 2010, 11:28:03 PM Ultima modificación: Marzo 07, 2010, 11:30:17 PM por soccer2008
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

Un foro donde hay de todo: http://fileceru.foroactivo.net (se necesitan moderadores para el foro)