Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: zangetsu en Agosto 01, 2014, 09:45:21 PM

Título: movimiento en orbita
Publicado por: zangetsu en Agosto 01, 2014, 09:45:21 PM
hola a todos, estoy haciendo un juego en el cual los movimientos del personaje tienen que ser en forma de órbita, cuando apreto la tecla arriba gira hacia la derecha alrededor de otro objeto, cuando apreto la tecla abajo lo mismo pero hacia la izquierda. y cuando apreto la tecla derecha o izquierda da vueltas en si mismo. les estaria muy agradesido si me pueden ayudar
Título: Re:movimiento en orbita
Publicado por: eams1986 en Agosto 02, 2014, 01:37:47 AM
Que es lo que quieres en realidad
Que gire el objeto o que gire alrededor de otro objeto .
Título: Re:movimiento en orbita
Publicado por: Guacusio en Agosto 02, 2014, 03:56:03 AM
Cita de: eams1986 en Agosto 02, 2014, 01:37:47 AM
Que es lo que quieres en realidad
Que gire el objeto o que gire alrededor de otro objeto .


Quiere ambas cosas.

Me parece que lo más práctico es que uses una variable que guarde el ángulo que forma el objeto centro con el objeto orbitando y que al presionar arriba o abajo se decremente o incremente esta variable respectivamente:

En el evento create del objeto satélite:

a=0;//guarda el ángulo del vector centro-satélite (en radianes)
r=200;//la distancia a la que orbita el satélite del centro
d=0.1;//velocidad angular de giro traslacional del satélite (en radianes)


En el evento keyboard flecha arriba del satélite:

a-=d;
x=o_centro.x+r*cos(a);
y=o_centro.y+r*sin(a);


En el evento keyboard flecha abajo del satélite:

a+=d;
x=o_centro.x+r*cos(a);
y=o_centro.y+r*sin(a);


Tienes que calibrar las variables a, d y r a tu gusto. El siguiente código aparece en ambos eventos:

x=o_centro.x+r*cos(a);
y=o_centro.y+r*sin(a);


Ese código puede ir en el evento step en vez de duplicarse, pero toma en cuenta que cuando el satélite no esté moviéndose se estará ejecutando innecesariamente.

Para que gire en torno a sí mismo, basta con que modifiques la variable image_angle del objeto satélite.
Título: Re:movimiento en orbita
Publicado por: zangetsu en Agosto 02, 2014, 10:00:05 PM
gracias amigo me funciona re bien, lo que si es que no se como usar la variable imagle_angle, la puse en el evento left pero no me funciona bien
Título: Re:movimiento en orbita
Publicado por: Maximo en Agosto 02, 2014, 10:26:39 PM
la variable imagle_angle te permite poner el ángulo de la imagen.
Por ejemplo si quieres que la imagen se vea al revés tienes que poner imagle_angle = 270
si quieres que la imagen gire puedes poner imagle_angle += 10
Título: Re:movimiento en orbita (SOLUCIONADO)
Publicado por: zangetsu en Agosto 03, 2014, 02:41:49 AM
gracias, era eso XD, me olvide de ponerle el +