Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: ordo_ab_chao en Julio 19, 2010, 01:56:39 AM

Título: como hacer que el enemigo me siga pero no vuele xD
Publicado por: ordo_ab_chao en Julio 19, 2010, 01:56:39 AM
(hola a todos, soy nuevo, si estoy cometiendo un error, d?ganmelo XD)
es un juego de plataforma, en que el personaje salta hasta diferentes alturas (debido a las plataformas), lo que pasa, es que el enemigo, al estar a una menor altura, persigue volando al personaje,
quisiera que cuando el enemigo este a una menor altura, este empiece a seguirlo horizontalmente saltando de vez en cuando, y que cuando est?n a la misma altura o el enemigo a una mayor altura, el enemigo siga al personaje sin saltar ni elevarse, no se si se entiende?  XD 
Título: Re: como hacer que el enemigo me siga pero no vuele xD
Publicado por: knd144 en Julio 19, 2010, 03:37:52 AM
Me imagino que usas la funci?n move_towards_point(), pues ese es el problema: Move_towards no le importa la gravedad  XD

Mira, solo en vez de unsar esa funci?n usa ifs, as?

Citar
if(obj_personaje.x>x)
{
  hspeed=+4// suponiendo que la velocidad del enemigo es 4, si el personaje est? a la derecha, el enemigo se desplazar? a la derecha
}
else if(obj_personaje.x<x)
{
  hspeed=-4// aqu? es el caso contrario para que se desplaze a la izquierda si el personaje est? a la izquierda
}
else
{
  speed=0// caso en que no se cumpla ninguna de las condiciones anteriores, o sea que est? en el mismo eje x
}

sobre el salto, hazlo con alarmas  :P
Título: Re: como hacer que el enemigo me siga pero no vuele xD
Publicado por: ordo_ab_chao en Julio 19, 2010, 04:20:28 AM
me ayudo bastante, pero algo debo estar haciendo mal, porque al tocar al objeto muro deja de moverse XD y eso de las alarmas en realidad no lo manejo, me lo podr?as explicar por favor XD
Título: Re: como hacer que el enemigo me siga pero no vuele xD
Publicado por: Herni en Julio 19, 2010, 05:33:11 AM
Cita de: knd144 en Julio 19, 2010, 03:37:52 AM
Me imagino que usas la funci?n move_towards_point(), pues ese es el problema: Move_towards no le importa la gravedad  XD

Mira, solo en vez de unsar esa funci?n usa ifs, as?

Citar
if(obj_personaje.x>x)
{
  hspeed=+4// suponiendo que la velocidad del enemigo es 4, si el personaje est? a la derecha, el enemigo se desplazar? a la derecha
}
else if(obj_personaje.x<x)
{
  hspeed=-4// aqu? es el caso contrario para que se desplaze a la izquierda si el personaje est? a la izquierda
}
else
{
  speed=0// caso en que no se cumpla ninguna de las condiciones anteriores, o sea que est? en el mismo eje x
}

sobre el salto, hazlo con alarmas  :P

Yo estaba haciendo algo parecido usando justo el move_towards_point(), pero adem?s de volar se atascaban.

El problema a?adido es que el c?digo que estoy intentando mejorar, me lo han dado de base con un c?digo de un sistema de plataformas y es una locura, casi prefiero parirme todo el c?digo por m? mismo desde cero, pero es lo que hay.

Al final hice otras pruebas con if's que respetan la posici?n X y la buscan, pero la gravedad se la pasan por el forro (de momento) y estoy viendo la forma de que se anticipen a las posibles ca?das y saltos que tengan que hacer, para subir o bajar correctamente de las plataformas.

Las alarmas me lo hac?an demasiado aleatorio, si se cumple la alarma en medio de una recta, quiz?s al caer, lo hace en un hoyo XD


Seguir? trasteando a ver si puedo decirle a los enemigos d?nde empiezan las plataformas para que seg?n su velocidad salte a tiempo para subir.


Un saludo,
- Herni
Título: Re: como hacer que el enemigo me siga pero no vuele xD
Publicado por: knd144 en Julio 20, 2010, 12:03:59 AM
ammm... vale, no usaremos alarmas para el salto, me acabo de acordar una forma de darle salto autom?tico (y con complicaciones m?nimas) a un enemigo. Bueno, ya tienes el enemigo con las indiaciones que te d? arriba, ok? ahora haces lo siguiente:

lo que haremos es que el salto sea un "estado" del enemigo, de la siguiente manera.

En el create pones la variable salto con valor en false

Citarsalto=false // por que en circunstancias normales no saltar? :P

ahora, en primera queremos que el enemigo salte cuando est? abajo del personaje, adem?s de que le daremos la opci?n de que salte cuando est? cerca de este (digamos a unos 30 pixeles de distancia con respecto a la coordenada x) ponemos este c?digo en el step:

Citar
if(obj_personaje.y<y && distance_to_point(obj_personaje.x,y)<=30) // aqu? indicamos si en personaje est? a una altura superior a la del enemigo y que est? a 30 o menos pixeles de distancia con respecto al eje x
{
salto=true // Le cambiamos el valor a la variable salto
}

ahora, esto es lo que har? el enemigo cuando se le cambie el valor a la variable salto a true, en el step tambi?n ponemos:

Citar
if salto==true

{
  if not place_free(x,y+1) //si no hay piso abajo.
  {
    vspeed=-8 //indicas cuanto va a saltar salto
  }
salto=false
};

Y pues con esto (en teor?a) el enemigo saltar? cuando est? cerca del personaje; a m? me ha funcionado en pruebas y cosas sencillas, no veo por qu? no te ir? a funcionar  ;D

SALUDOS  ;)
Título: Re: como hacer que el enemigo me siga pero no vuele xD
Publicado por: ordo_ab_chao en Julio 20, 2010, 03:44:54 AM
esta excelente, esta funcionando al 100 solamente que al saltar algunos enemigos se quedan pegados en las plataformas XD, tratar? de arreglar eso, y ojal? que me puedan ayudar aunque se que ya estoy pidiendo mucho  :-[