he hecho muchas clases de enemigos, el tipico de pared a pared, el que sigue en linia recta hasta caerse, volador, etc. Per? mi pregunta ?s: como puedo hacer para que un enemigo de media vuelta cuando acaba una plataforma o hay un precipici? en frente? Yo habia pensado en utilizar place_free(x,y) y una variable que se encargara de detectar la hspeed para determinar la direcci?n, per? no se como decirle exactamente que se gire cuando acaba la plataforma :-[ el codigo que se encarga de hacerle girar si lo se hacer ya que es igual que el que va contra la pared, pero en este caso no hay pared XD
Es para un juego de plataformas.
Gracias de antemano :)
----by:Croer----

hola, por lo que he leido tu lo que quieres hacer es que el enemigo se regrese al tocar una pared??'

bueno as un objeto invisible que no sea solido y que el objeto cuando lo toque cambie de direcci?n y lo pones en las orillas o donde quieres que de la media vuelta.
espero que eso aiga sido lo que querias :P

Cita de: Croer en Junio 14, 2010, 10:57:12 PM
he hecho muchas clases de enemigos, el tipico de pared a pared, el que sigue en linia recta hasta caerse, volador, etc. Per? mi pregunta ?s: como puedo hacer para que un enemigo de media vuelta cuando acaba una plataforma o hay un precipici? en frente? Yo habia pensado en utilizar place_free(x,y) y una variable que se encargara de detectar la hspeed para determinar la direcci?n, per? no se como decirle exactamente que se gire cuando acaba la plataforma :-[ el codigo que se encarga de hacerle girar si lo se hacer ya que es igual que el que va contra la pared, pero en este caso no hay pared XD
Es para un juego de plataformas.
Gracias de antemano :)

Va a hablar el inexperto de turno, pero yo lo har?a as?:

Supongo que tu plataforma estar? creada a partir de objetos de un tipo, pues yo lo que har?a ser?a comprobar si debajo de ?l un step m?s adelante hay o no ese tipo de objeto que usas como plataforma... ejemplo de pseudo-c?digo, ya que no domino GML, e ir?a en el step del goomba: XD

si no existe el objetoplataforma en la posici?n (goomba.x+goomba.hspeed, goomba.y+goomba.AlturaSprite)
{
cambiar de direcci?n al goomba
cambiar sprite al goomba
}


"goomba.x+goomba.hspeed" => para que compruebe el siguiente paso antes de darlo
"goomba.y+goomba.AlturaSprite" => para que la altura donde comprobar sea debajo de ?l


Siento no poder hacer m?s por t?, es hasta donde llego.


Un saludo,
- Herni
(Acepto todo tipo de cr?ticas, ya que soy novato total, usando GM desde el 12 de Junio de 2010)
(Me ofrezco como voluntario para cualquier proyecto en el que pueda echar una manilla)
HerniHost (Dise?o Web, Hosting y Registro de Dominios)

El c?digo de herni deberia funcionar (si bien no es un c?digo realmente...) pero con esta modificaci?n

si no existe el objetoplataforma en la posici?n (goomba.x+goomba.hspeed, goomba.y+goomba.AlturaSprite+1)
{
   cambiar de direcci?n al goomba
   cambiar sprite al goomba
}




Podr?as hacer los suelos de las esquinas diferentes, donde cambiar?a de direcci?n horizontal cuando est? sobre ?l...

? = goomba
- = suelo normal
> = suelo que cambia direcci?n


    ?
>-------->

Aunque no llegar?a hasta el borde del todo...

Gracias a todos por sus respuestas :D, al final con el "codigo" de Herni con la correcci?n de Texic ha funcionado, ademas tambi?n lo he modificado un poco por un peque?o bug que daba:
if! place_meeting(self.x+21, self.y+65,obj_plataforma)
{
   sprite_index=spr_goomba_der
   hspeed=-5
}else if! place_meeting(self.x-21, self.y+65,obj_plataforma)
{
   sprite_index=spr_goomba_izq
   hspeed=5
}

el bug era que al poner el nombre del objeto en vez de self hacia que todas las instancias canviasen de direcci?n cuando una sola lo hacia, es decir, todos los enemigos cogian como referencia el primero que havia creado en la room. XD Otra cosa que hay que tener en cuenta es donde esta el centro del sprite(yo siempre hago que lo haga automaticamente con el boton center) a la hora de poner el ancho del objeto. Aqui dejo el "codigo":
if! place_meeting(self.x+(poner la mitad de su anchura), self.y+(altura+1),obj_plataforma)
{
   sprite_index=spr_goomba_der
   hspeed=-5
}else if! place_meeting(self.x-(poner la mitad de su anchura), self.y+(altura+1),obj_plataforma)
{
   sprite_index=spr_goomba_izq
   hspeed=5
}

La idea de Santkont tambien es buena per? es crear objetos de m?s y yo quiero evitar poner muchos objetos.

Los nombres de los recursos no s?n los originales, solo puse el nombre de goomba porque es mas facil de reconocer este tipo de enemigos :P
En realidad lo necesitaba para este juego.
----by:Croer----

Cita de: Croer en Junio 15, 2010, 04:22:40 PM
Gracias a todos por sus respuestas :D, al final con el "codigo" de Herni con la correcci?n de Texic ha funcionado, ademas tambi?n lo he modificado un poco por un peque?o bug que daba.

Yo es que no doy para m?s con el GML... de momento ;)


Un saludo,
- Herni
(Acepto todo tipo de cr?ticas, ya que soy novato total, usando GM desde el 12 de Junio de 2010)
(Me ofrezco como voluntario para cualquier proyecto en el que pueda echar una manilla)
HerniHost (Dise?o Web, Hosting y Registro de Dominios)