Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: 7sixerCF en Febrero 03, 2014, 02:00:59 AM

Título: Problema al hacer que un objeto se mueva hacia otro
Publicado por: 7sixerCF en Febrero 03, 2014, 02:00:59 AM
Hola, lo que pasa es que tengo un objeto que hace que cuando yo preciono el clic izquierdo del mouse este cree un objeto go_obj en la posicion del mismo, tambien mi objeto player_obj tiene un evento que hace que el personaje se dirija hacia el objeto cuando se hace click izquierdo el problema es que el objeto go_obj que player_obj tiene que seguir no se crea con la suficiente velocidad para que player_obj lo siga y por ende las variables x e y de go_obj producen error por que nunca se alcanzaron a generar

EN RESUMEN
el jugador no puede encontrar el punto que tiene que seguir por que comprueba la posicion mas rapido de lo que se crea el objeto y por ende produce error
Título: Re:Problema al hacer que un objeto se mueva hacia otro
Publicado por: DarkKRuleR en Febrero 03, 2014, 02:06:47 AM
Has probado a hacer, en el objeto que creas, poner el código de movimiento? si dices que creas B, pero que A comprueba la existencia de B antes de crease, y por eso falla. Pues haz que al crearse B, se ejecute el codigo (en el objeto B) para mover A.

EDIT: otra solución alternativa:

Citarcuando yo preciono el clic izquierdo del mouse este cree un objeto go_obj en la posicion del mismo... ... ...  el personaje se dirija hacia el objeto cuando se hace click izquierdo

No tienes por qué moverte hacia el objeto, con moverte hacia el ratón vale. Ten unas variables xGo, yGo, en create inicialízalas, y en el evento global mouse pressed del objeto A, asigna xGo e yGo a las coordenadas del ratón. Luego, en step, haces que se mueva hacia xGo e yGo. Así, al hacer click izquierdo de mouse, actualizas xGo e yGo, es decir, que coordenadas deberia tener, y en step vas hacia ellas. Something like...

[gml]if (x != xGo) {
     for (i = 0; i < 10; i += 1) {
          if (x < xGo) x += 1; else x -= 1;
          if (abs(x-xGo) < 5) {x = xGo; break;}
     }
}[/gml]

y lo mismo para yGo. Eso hará que se mueva en diagonal hacia las coordenadas. Si quieres un movimiento más preciso te puedo escribir algo más elaborado que usa senos y cosenos, pero primero quiero ver si esto sencillo lo resuelve :D
Título: Re:Problema al hacer que un objeto se mueva hacia otro
Publicado por: 7sixerCF en Febrero 03, 2014, 02:14:45 AM
Cita de: DarkKRuleR en Febrero 03, 2014, 02:06:47 AM
Has probado a hacer, en el objeto que creas, poner el código de movimiento? si dices que creas B, pero que A comprueba la existencia de B antes de crease, y por eso falla. Pues haz que al crearse B, se ejecute el codigo (en el objeto B) para mover A.

EDIT: otra solución alternativa:

Citarcuando yo preciono el clic izquierdo del mouse este cree un objeto go_obj en la posicion del mismo... ... ...  el personaje se dirija hacia el objeto cuando se hace click izquierdo

No tienes por qué moverte hacia el objeto, con moverte hacia el ratón vale. Ten unas variables xGo, yGo, en create inicialízalas, y en el evento global mouse pressed del objeto A, asigna xGo e yGo a las coordenadas del ratón. Luego, en step, haces que se mueva hacia xGo e yGo. Así, al hacer click izquierdo de mouse, actualizas xGo e yGo, es decir, que coordenadas deberia tener, y en step vas hacia ellas. Something like...

[gml]if (x != xGo) {
     for (i = 0; i < 10; i += 1) {
          if (x < xGo) x += 1; else x -= 1;
          if (abs(x-xGo) < 5) {x = xGo; break;}
     }
}[/gml]

y lo mismo para yGo. Eso hará que se mueva en diagonal hacia las coordenadas. Si quieres un movimiento más preciso te puedo escribir algo más elaborado que usa senos y cosenos, pero primero quiero ver si esto sencillo lo resuelve :D

Muchas gracias no se por que no se me ocurrio hacer que el objeto b cree el movimiento del objeto A jakjakaja xD bueno, vale