Buenas, tengo un problemilla. Os cuento un poco asi por encima, os agradeceria mucho algun consejillo.
El caso es que estoy moviendo un personaje A con el move_towards, con una alarma, que se ejecuta cada 10 steps. voy determinando la dirección del move_towards.
Hasta todo perfecto, el personaje se va moviendo a su royo, todo bien, el problema llega, cuando colisiona con otro personaje B, este personaje A, no se detiene, veo como su sprite cambia debido a la colision, pero ignora el movimiento de detenerse, y este continua un poco mas y despues si se para.
Al parecer, continua el move_towards y cuando llega al punto que ya tenia cargado, entonces ya si para y dejar de hacer los move_towards.
Y aqui, la gran pregunta. Como anulo esa orden ya cargada del move_towards???
Si alguien sabe algo por favor, un consejo no me vendria mal.
Saludos a todos. ;D
Cita de: nonoroman en Noviembre 01, 2015, 09:59:47 PM
cuando colisiona con otro personaje B, este personaje A, no se detiene, veo como su sprite cambia debido a la colision, pero ignora el movimiento de detenerse
¿Qué código usas para detenerlo? Probablemente ese código es es lo que provoca la falla.
La función move_towards_point() no se detiene al haber una colisión, de hecho, no se detiene ni siquiera al llegar al punto indicado, sino que es el programador el encargado de especificar qué hacer al llegar al destino.
Cita de: nonoroman en Noviembre 01, 2015, 09:59:47 PM
Y aqui, la gran pregunta. Como anulo esa orden ya cargada del move_towards???
Lo que hace la función es darle un valor a la variable speed. El ejemplo del manual ilustra justamente cómo "anular" la orden de movimiento:
Citarif point_distance(x, y, target.x, target.y) > 5
{
move_towards_point(target.x, target.y, 5);
}
else speed = 0;
Si no se está cerca del punto target, se aplica un movimiento hacia ese punto con velocidad de 5, de lo contrario (se llegó al punto), la velocidad de la instancia se hace 0 para detener su movimiento.
Una alternativa que quizás te parezca mejor es usar la función mp_linear_step() que sí detiene la instancia al llegar al punto indicado (o al chocar con un objeto)
http://docs.yoyogames.com/source/dadiospice/002_reference/movement%20and%20collisions/motion%20planning/mp_linear_step.html
Muchas gracias una vez mas penumbra, siempre ayudando mucho en esta comunidad. Eres muy grande.
Te comento, con el icono drag and drop de move fixed si que detiene el move_towards. En el momento que sea ahora, mi pregunta de ahora es la siguiente.
Cual es el equivalente en codigo este icono de drag and drop??? Os pongo una imagen para que sepais a cual me refiero.
Cita de: penumbra en Noviembre 01, 2015, 10:10:42 PM
Cita de: nonoroman en Noviembre 01, 2015, 09:59:47 PM
cuando colisiona con otro personaje B, este personaje A, no se detiene, veo como su sprite cambia debido a la colision, pero ignora el movimiento de detenerse
¿Qué código usas para detenerlo? Probablemente ese código es es lo que provoca la falla.
La función move_towards_point() no se detiene al haber una colisión, de hecho, no se detiene ni siquiera al llegar al punto indicado, sino que es el programador el encargado de especificar qué hacer al llegar al destino.
Cita de: nonoroman en Noviembre 01, 2015, 09:59:47 PM
Y aqui, la gran pregunta. Como anulo esa orden ya cargada del move_towards???
Lo que hace la función es darle un valor a la variable speed. El ejemplo del manual ilustra justamente cómo "anular" la orden de movimiento:
Citarif point_distance(x, y, target.x, target.y) > 5
{
move_towards_point(target.x, target.y, 5);
}
else speed = 0;
Si no se está cerca del punto target, se aplica un movimiento hacia ese punto con velocidad de 5, de lo contrario (se llegó al punto), la velocidad de la instancia se hace 0 para detener su movimiento.
Una alternativa que quizás te parezca mejor es usar la función mp_linear_step() que sí detiene la instancia al llegar al punto indicado (o al chocar con un objeto)
http://docs.yoyogames.com/source/dadiospice/002_reference/movement%20and%20collisions/motion%20planning/mp_linear_step.html
El equivalente a marcar el cuadro central es
[gml]speed = 0;[/gml]
esto te ayudará muchisimo como lo ha hecho conmigo y supongo que mucha más gente :P
http://www.comunidadgm.org/index.php?page=verdescargas&accion=descargaD&download_id=157
está algo incompleto, pues se hizo para una versión muy antigua de GM, pero si buscas en google hay versiones más recientes, te he puesto ese ahora porque ando con prisa, pero si no encuentras, dilo y ya te pasaré uno más reciente ;)
Pero que es esto exactamente??
Por cierto, gracias a todos por los consejos.
Cita de: kostra en Noviembre 04, 2015, 08:00:11 PM
esto te ayudará muchisimo como lo ha hecho conmigo y supongo que mucha más gente :P
http://www.comunidadgm.org/index.php?page=verdescargas&accion=descargaD&download_id=157
está algo incompleto, pues se hizo para una versión muy antigua de GM, pero si buscas en google hay versiones más recientes, te he puesto ese ahora porque ando con prisa, pero si no encuentras, dilo y ya te pasaré uno más reciente ;)
Hostias, este programa la verdad, es que ayuda aprender codigo, no esta mal. Lo tendre en cuenta.
Para solucionar mi problema para parar a move_towards, finalmente he utilizado otro metodo en el step, y de momento parece que me funciona. Aunque tengo que perfilar cosas pero creo que me vale.
Gracias a todos!!! kostra te debo salir en los creditos por el programilla, esta bastante bien.
Cita de: kostra en Noviembre 04, 2015, 08:00:11 PM
esto te ayudará muchisimo como lo ha hecho conmigo y supongo que mucha más gente :P
http://www.comunidadgm.org/index.php?page=verdescargas&accion=descargaD&download_id=157
está algo incompleto, pues se hizo para una versión muy antigua de GM, pero si buscas en google hay versiones más recientes, te he puesto ese ahora porque ando con prisa, pero si no encuentras, dilo y ya te pasaré uno más reciente ;)
CitarAutor: xception
No merezco ningún crédito por algo que no es mío xD