Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Strod en Diciembre 13, 2012, 12:03:39 PM

Título: Movimiento de sprite a lo largo de una circunferencia.
Publicado por: Strod en Diciembre 13, 2012, 12:03:39 PM
Hola a todos y enhorabuena por esta fantástica comunidad.

Hace tiempo que busco la manera de hacer una cosa y no hay manera.

El caso es que quiero que un sprite se mueva a lo largo de una circunferencia (el borde de un circulo) y que lo haga poco a poco, es decir, que mediante una pulsación de una tecla se mueva una cantidad determinada de grados, no que esté girando continuamente. He visto y probado métodos para que se mueva de manera ininterrumpida, pero no sé hacerlo del modo que pido.

A ver si alguien puede ayudarme.
Saludos.
Título: Re:Movimiento de sprite a lo largo de una circunferencia.
Publicado por: Mgbu en Diciembre 13, 2012, 01:53:30 PM
Se debe poder hacer con Paths (http://www.comunidadgm.org/manual_GM/Paths.htm), son caminos, ponés un objeto en ese camino y listo

Vas a necesitar escribir en GML, en el manual en español (http://www.comunidadgm.org/manual_GM/Paths_GML.htm) podes ver cómo usar las funciones "path_position" y "path_speed" que te van a servir.
La primera coloca al objeto en el lugar que quieras dentro del path, y la segunda te permite elegir la velocidad de movimiento del objeto
Título: Re:Movimiento de sprite a lo largo de una circunferencia.
Publicado por: ferhand en Diciembre 13, 2012, 04:32:57 PM
  Saludos makero Strod:


   Como bien dice mi amigo Mgbu, un "path" es una solución a tu duda.

  Hace tiempo tuve la misma pregunta y experimenté con varias formas. Una de las mejores para lograr hacer desplazar a un objeto por una línea imaginaria de curvas precisas y además orientado según la dirección del movimiento es utilizar un "path". En mi caso particular divido el "path" en varios puntos, por ejemplo mil (1000) y cada uno lo guardo en un "array" bidimensional. Cada vez que vaya a dibujar, o mover algún elemento por esa línea, simplemente localizo los puntos guardados en el "array". De esta forma, a la hora de mover, no necesito calcular en cada momento la posición del elemento  con respecto al "path", simplemente selecciono de puntos ya existentes. Creo que es un poco más eficiente.

En caso de que necesites describir un círculo, simplemente puedes utilizar las funciones trigonométricas para localizar las coordenadas "X" y "Y" en los límites del círculo. Aun así, siempre recomiendo que es mejor guardar los puntos a utilizar que calcular a tiempo real cada posición en el momento.

  Espero resuelvas la duda, de lo contrario, sigue preguntando que estamos para responder... ;D 
Título: Re:Movimiento de sprite a lo largo de una circunferencia.
Publicado por: Strod en Diciembre 13, 2012, 07:39:25 PM
Primero de todo, muchas gracias Mgbu y ferhand por vuestra ayuda.

Ayer precisamente estaba viendo como hacerlo con paths pero no lograba ver el modo, seguiré vuestras indicaciones tanto con las funciones que me habéis dicho como con los arrays a ver si así lo logro.

Gracias de nuevo y saludos.
Título: Re:Movimiento de sprite a lo largo de una circunferencia.
Publicado por: Texic en Diciembre 13, 2012, 10:18:54 PM
Pff, no es por sacarles el mérito chicos, pero un path no va a solucionar mucho, es demasiado fijo y no se adaptaría al tamaño del círculo. Hay que usar las funciones lengthdir, te dejo un ejemplo, en el script que armé se definen las coordenadas con respecto a las cuales girar, el radio del círculo a recorrer y los grados
Espero que lo entiendas facil, traté de hacerlo simple, saludos!

PD: Tené en cuenta al mirar el ejemplo que las sprites están centradas, también se podrían acomodarlas sin estar centradas, pero es mucho más simple centrándolas

PD2: Felicitaciones, debes ser de los primeros que llegan a la comunidad y leen las reglas antes de postear  XD
Título: Re:Movimiento de sprite a lo largo de una circunferencia.
Publicado por: Strod en Diciembre 14, 2012, 11:51:34 AM

Joer Texic, que máquina!! es justo lo que buscaba. Lo acabo de probar, le echado un vistazo rápido porque ahora no puedo mirarlo con detenimiento pero creo que el algoritmo va a ser asimilable con un poco de esfuerzo, muchísimas gracias, se nota que controlas del tema  ;).

Saludos a todos.

PD. Sí, leí las normas y busqué antes de preguntar pero no vi por ningún nada que me aclarase con mi duda.